• 技术文章 >后端开发 >XML/RSS教程

    android dom 解析xml方式

    黄舟黄舟2017-02-17 15:02:21原创845

    首先自己创建一个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中文网(m.sbmmt.com)!


    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:android dom xml
    上一篇:XML引入以及与html的区别 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 详细介绍xml的语法的使用和学习• Xml_javascript分页• 具体介绍历数Firefox2.0对XML处理的改进的代码实例(图)• XML数据读取方式性能比较(一)• Javascript 调用XML制作连动下拉框代码实例详解
    1/1

    PHP中文网