欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Dom 解析XML文件

程序员文章站 2022-05-29 08:21:17
...

一、引言

       说起来学java好长时间了,却不会XML的解析,感觉好惭愧。由于要用到XML所以学习下怎么解析XML,百度了下发下JAVA下有好多方式去解析,在这就先学习下以DOM模式的解析。

       W3C关于XML的DOM教程:http://www.w3school.com.cn/xmldom/index.asp

二、解析XML

       如何 装载XML

//使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器
DocumentBuilderFactory fac=DocumentBuilderFactory.newInstance();
//使用当前配置的参数创建一个新的 DocumentBuilder 实例
DocumentBuilder builder=fac.newDocumentBuilder();
   //获取document实例 string或者是file
Document doc=builder.parse("test.xml");

 

      (1) 解析XML文档目的我觉的是:1.得到某个节点的属性值

                                                                2.得到这个节点的值

      (2)这样出来了一个问题如何得到你想要的节点:好像只有遍历了,如果有好的方法告诉我。

//根节点获取的方法
Element root=doc.getDocumentElement();
//得到所有同样的节点 不论是否是统一级别的
NodeList list=root.getElementsByTagName("employee");
//遍历得到想要的 属性、文本值
for(int i=0;i<list.getLength();i++){
Element e=(Element)list.item(i);
System.out.println("nodeName:"+e.getNodeName());
System.out.println("attribute:"+e.getAttribute("name"));
System.out.println("attribute:"+e.getAttribute("id"));
System.out.println("attrTxt"+e.getElementsByTagName("id").item(0).getFirstChild().getNodeValue());
}

//======================================
//统一级别的
NodeList list=  root.getChildNodes();
System.out.println(list.getLength());
for(int i=0;i<list.getLength();i++)
{
//注意判断是否符合要求
if(list.item(i) instanceof Element)
{		
Element e=(Element)list.item(i);	
System.out.println("nodeName:"+e.getNodeName());
System.out.println(e.getAttribute("name"));
System.out.println("attribute:"+e.getAttribute("id"));
System.out.println(e.getElementsByTagName("id").item(0).getFirstChild().getNodeValue());
}
}

 

      (3)因为在这样的方式中获取你想要的东西值,被分为了2样:1.属性

                                                                                                            2.节点文本

//属性
Element.getAttribute("");
//文本
Element.getElementsByTagName("id").item(0).getFirstChild().getNodeValue();

  最后:我觉得在取值这块非常不方便、获取特定节点这块也很不方便

三、Dom4j形式

 Dom4j的用法:http://www.java3z.com/cwbwebhome/article/article2/2296.html?id=837

                            http://lavasoft.blog.51cto.com/62575/66953

 xpath解析可能最喜欢这个了,准确定位很方便实用的。
实用的时候引用jar包:jaxen-1.1-beta-6