Dom 解析XML文件
一、引言
说起来学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
上一篇: DOM解析XML文件
下一篇: Linux配置Jupyter可远程访问