android dom 解析xml方式

互联网 17-2-17
首先自己创建一个xml文件:DomTest.xml
<?xml version="1.0" encoding="utf-8"?>  <classes>  	<group name="一年级" num="10">  		<person name="小明" age="7">  			<chinese>  				语文80  			</chinese>  			<english>  				英语89  			</english>  		</person>  		<person name="小强" age="8">  			<chinese>  				语文90  			</chinese>  			<english>  				英语99  			</english>  		</person>  	</group>  	<group name="二年级" num="20">  		<person name="小文" age="8">  			<chinese>  				语文85  			</chinese>  			<english>  				英语95  			</english>  		</person>  		<person name="小中" age="9">  			<chinese>  				语文80  			</chinese>  			<english>  				英语90  			</english>  		</person>  	</group>  </classes>

解析出来的结果显示如下图:

下面来分析源代码:

/**   * 用dom方式 解析xml 文件   * @param fileName   */  	private String domXmlParse(String fileName) {  		String str="";  		// xml文档创建工厂  		DocumentBuilderFactory docFactory = DocumentBuilderFactory  				.newInstance();  		// xml文档创建实例  		DocumentBuilder docBuilder;  		// xml文档  		Document doc = null;  		InputStream inStream = null;  		try {  			docBuilder = docFactory.newDocumentBuilder();  			// 从assets文件夹下获取文件 转换成输入流  			inStream = this.getResources().getAssets().open(fileName);  			doc = docBuilder.parse(inStream);  			// 获取xml跟元素  			Element rootEle = doc.getDocumentElement();  			// 二级父元素的list列表  			NodeList groupNode = rootEle.getElementsByTagName("group");  			// NodeList childNode = rootEle.getElementsByTagName("person");  			// 遍历Classe下所有的group  			for (int i = 0; i < groupNode.getLength(); i++) {    				Element groupEle = (Element) groupNode.item(i);  				String groupName = groupEle.getAttribute("name");  				String num = groupEle.getAttribute("num");  				str =str+"name ="+groupName+" num = "+num+"\n";  				  				Log.e("xml", "name = " + groupName + "  num = " + num);    //				NodeList personNode = groupNode.item(i).getChildNodes();  				NodeList personNode = groupEle.getElementsByTagName("person");  				// 遍历group下的所有person  				for (int j = 0; j < personNode.getLength(); j++) {  					Element personEle = (Element) personNode.item(j);  					String name = personEle.getAttribute("name");  					String age = personEle.getAttribute("age");  					str =str+"personName ="+name+" personAge = "+age+"\n";  					  					Log.e("xml", "name = " + name + "   age = " + age);    					Element chineseEle = (Element) personEle  							.getElementsByTagName("chinese").item(0);  					Element englistEle = (Element) personEle  							.getElementsByTagName("english").item(0);  					String chinese = chineseEle.getFirstChild().getNodeValue();  					String english = englistEle.getFirstChild().getNodeValue();  					str =str+"chinese = "+chinese+" english = "+english+"\n";  					  					Log.e("xml", "chinese = " + chinese + "   english = "  							+ english);  				}  			}    		} catch (ParserConfigurationException e1) {  			e1.printStackTrace();  		} catch (IOException e) {  			e.printStackTrace();  		} catch (SAXException e) {  			e.printStackTrace();  		}  		return str;  	}

为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。

以上就是android dom 解析xml方式 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: xml
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:XML引入以及与html的区别

相关资讯