Dom4J解析技术
2016-09-11 20:48
477 查看
前面的话
本文主要讲解有关Dom4j技术和xpath配合下的优化!
目录:
为什么需要Dom4J
DOM4J怎么用
[b]xpath怎么配合DOM4J[/b]
一 为什么需要Dom4J
一门技术出现必定是有原因的,一来是解决某方面技术问题,再者可能是优化性能。
xmlDom 简单方便,可以将xml文档以"DOM树"的形式装进内存,节点对象操作元素。但xml数据量较大时,消耗内存也大。sax访问元素方便,不能对元素crud。都是有明显缺点的。
Dom4j的出现,正好优化了xml解析。
Dom4j和xmlDom 从操作上看很相似,可以说只是对应的API不一样。
值得注意的是:
DOM4J不是sun公司自己的产品,所以没有提供服务的jar包,我们可以自己下载DOM4J-API包,里面有API(index-html),jar包等。
二 DOM4J怎么用
准备好示例xml
(1)访问元素
(2)插入元素
(3)修改
(4)删除
FIND:访问属性时: node.Elements('NodeName'); 里面的元素只能是node的直接子节点,不可以是孙子(包括以后)。也不能根据id,name属性来访问元素。
那么为提高查询效率,需要借助xpath;
三:xpath怎么配合DOM4J
(1)什么是xpath
xpath操作xml有点像sql语言查询数据库的效果,简单的说,xpath是一种查询格式。
示例xml
看下面xpath配合DOM4j------注意xpath不单独使用
xpath细节:
(1) "/AAA/BBB"-----AAA下的BBB集合(只是子节点), /有点路径的意思。
再者:"/AAA/BBB[1]"----就是具体指第1个BBB元素(这里的1不是index=0开始的,就是实际上的1).
(2) "//AAA"-----指的是xml中全部AAA元素;
比如:"//AAA/BBB"---父元素是AAA的全部BBB元素集合(List)
(3) "//BBB[@id='sp001']"-----取出id=‘sp001’的BBB元素集合(List)
"//BBB[@name="Bbb"]"-----取出name="Bbb"的元素集合(List)
"//BBB[@id='sp001'][1]''----取出第1个元素
find: 通过xpath的修饰,DOM4J的查询功能就很强大了。适用于大多数情况,一般解析xml文档都是使用它。
本文主要讲解有关Dom4j技术和xpath配合下的优化!
目录:
为什么需要Dom4J
DOM4J怎么用
[b]xpath怎么配合DOM4J[/b]
一 为什么需要Dom4J
一门技术出现必定是有原因的,一来是解决某方面技术问题,再者可能是优化性能。
xmlDom 简单方便,可以将xml文档以"DOM树"的形式装进内存,节点对象操作元素。但xml数据量较大时,消耗内存也大。sax访问元素方便,不能对元素crud。都是有明显缺点的。
Dom4j的出现,正好优化了xml解析。
Dom4j和xmlDom 从操作上看很相似,可以说只是对应的API不一样。
值得注意的是:
DOM4J不是sun公司自己的产品,所以没有提供服务的jar包,我们可以自己下载DOM4J-API包,里面有API(index-html),jar包等。
二 DOM4J怎么用
准备好示例xml
<?xml version="1.0" encoding="UTF-8"?> <class> <stu id="SP001"> <name>小刘</name> <age>12</age> <Math>100</Math> <English>90</English> </stu> <stu id="sp002"> <name>小明</name> <age>12</age> <Math>98</Math> <English>90</English> </stu> <stu id="sp003"> <name>小张</name> <age>12</age> <Math>83</Math> <English>91</English> </stu> </class>
(1)访问元素
Element e= document.getRootElement().Element('stu'); Element nameNode= (Element) e.elements("name").get(0); //等价于e.Element('name'); System.out.println( nameNode.getText());//小明
(2)插入元素
Element stuEle=DocumentHelper.createElement("stu"); stuEle.addAttribute("id", "sp003"); //添加属性(id) Element nameEle=DocumentHelper.createElement("name"); nameEle.setText("宋江"); Element ageEle=DocumentHelper.createElement("age"); ageEle.setText("11"); Element MathEle=DocumentHelper.createElement("Math"); MathEle.setText("100"); //将元素挂到stu上 stuEle.add(nameEle); stuEle.add(ageEle); stuEle.add(MathEle); //刷新,这很重要。
(3)修改
(4)删除
FIND:访问属性时: node.Elements('NodeName'); 里面的元素只能是node的直接子节点,不可以是孙子(包括以后)。也不能根据id,name属性来访问元素。
那么为提高查询效率,需要借助xpath;
三:xpath怎么配合DOM4J
(1)什么是xpath
xpath操作xml有点像sql语言查询数据库的效果,简单的说,xpath是一种查询格式。
示例xml
<?xml version="1.0" encoding="UTF-8"?> <AAA> <BBB id="sp001">B1</BBB> <BBB id="sp002" name="Bbb"> <CCC>C1</CCC> <AAA> <BBB>B2</BBB> </AAA> <BBB>B3</BBB> </BBB> </AAA>
看下面xpath配合DOM4j------注意xpath不单独使用
List list=doc.selectNodes("/AAA/BBB"); // "/AAA/BBB"就是xpath格式 System.out.println(list.size()); //2; //(1)xpath最经典的用法一 Element list1= (Element)doc.selectSingleNode("/AAA/BBB[1]"); // 拿到属性和Text System.out.println("id||"+list1.attributeValue("id")); System.out.println("TextContent||"+list1.getText()); // (2)经典用法二 //通过id,name属性选出元素,相等于getElementById("ID");getElementsByTagName() //取出id=‘sp001’的BBB元素; Element node= (Element)(doc.selectNodes("//BBB[@id='sp001']").get(0)); System.out.println(node.getText()); //B1; //取出name属性为"Bbb"的BBB元素 Element n= (Element) doc.selectSingleNode("//BBB[@name='Bbb'][1]"); System.out.println(n.attributeCount()); //2
xpath细节:
(1) "/AAA/BBB"-----AAA下的BBB集合(只是子节点), /有点路径的意思。
再者:"/AAA/BBB[1]"----就是具体指第1个BBB元素(这里的1不是index=0开始的,就是实际上的1).
(2) "//AAA"-----指的是xml中全部AAA元素;
比如:"//AAA/BBB"---父元素是AAA的全部BBB元素集合(List)
(3) "//BBB[@id='sp001']"-----取出id=‘sp001’的BBB元素集合(List)
"//BBB[@name="Bbb"]"-----取出name="Bbb"的元素集合(List)
"//BBB[@id='sp001'][1]''----取出第1个元素
find: 通过xpath的修饰,DOM4J的查询功能就很强大了。适用于大多数情况,一般解析xml文档都是使用它。
相关文章推荐
- DOM4J的 DOM解析 和XPATH技术
- XML-解析技术续(dom4j解析)
- Java中四种XML解析技术对比(Dom、Sax、Dom4j JDom)
- XML解析技术 dom4j读取技术
- 1月10日之day02--xml解析技术 dom4j
- 解析xml文件的几种技术与Dom4j与sax之间的对比
- Java中四种XML解析技术【JSP、SAX、JDOM、DOM4J】
- Java xml 操作(Dom4J修改xml   + xPath技术  + SAX解析 + XML约束)
- XML解析技术:dom4j(一)
- XML系列:(8)XML解析-Dom4j的xPath技术
- XML解析技术-dom4j
- 浅谈XML 解析技术(四) Dom4j解析
- Java xml 操作(Dom4J修改xml   + xPath技术  + SAX解析 + XML约束)
- xml解析技术介绍(dom4j,dom,jdom,sax)
- JavaWeb系列之四(XML的解析技术(dom,sax)和解析器(jaxp,dom4j))
- Java xml 操作(Dom4J修改xml   + xPath技术  + SAX解析 + XML约束)
- Dom4j和XPath的XML解析技术
- XML学习总结-xml概念和dom4j解析技术-(一)
- ATi的救赎——X1000系列显卡技术详细解析(zz)
- 解析IBM服务器内存技术