Java实现解析并生成xml原理实例详解
XML解析:
- *解析xml可以做:
- *如果xml作为配置文件:读取
- *如果xml作为传输文件:写,读
xml解析思想:
- *DOM:将文档加载进内存,形成一颗dom树(document对象),将文档的各个组成部分封装为一些对象。
- *优点:因为,在内存中会形成dom树,可以对dom树进行增删改查。
- *缺点:dom树非常占内存,解析速度慢。
Document
Element
Text
Attribute
Comment
*SAX:逐行读取,基于事件驱动
*优点:不占内存,速度快
*缺点:只能读取,不能回写
xml常用的解析器:
- *JAXP:sun公司提供的解析。支持dom和sax。(不常用)
- *JDOM:
- *DOM4J:domforjava民间方式,但是是事实方式。非常好。支持dom
1.导入jar包dom4j.jar
2.创建解析器
SAXReaderreader=newSAXReader();
3.解析xml获得document对象
Documentdocument=reader.read(url);
- *XPATH:专门用于查询
- *定义了一种规则。
- *使用的方法:
- *selectSingleNode():
- *selectNodes():
使用步骤:
1、注意:要导包jaxen...jar
2、创建解析器
SAXReaderreader=newSAXReader();
3、解析xml获得document对象
Documentdocument=reader.read(url);
*解析XML:
//1、得到某个具体的节点内容:第2本书的书名--》葵花宝典
//2、遍历所有元素节点
XPath:
- //nodename选取此节点。
- ///从根节点选取。
- ////从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
- //..选取当前节点的父节点。
- //@选取属性。
- //[@属性名]属性过滤
- //[标签名]子元素过滤
例子:
/*demo.xml*/ @Test publicvoidtest1()throwsDocumentException{ SAXReaderreader=newSAXReader(); Documentdoc=reader.read("./src/demo.xml"); Elementroot=doc.getRootElement(); Elementbook1=root.element("book"); System.out.println(book1.getPath()); System.out.println(book1.elementText("price")); List>list=root.elements("book"); Elementbook2=(Element)list.get(1); System.out.println(book2.attributeValue("name")); for(Iterator>it=book1.elementIterator();it.hasNext();){ Elementele=(Element)it.next(); System.out.println(ele.getName()+":"+ele.getText()); } } @Test publicvoidtest2()throwsException{//使用XPath,只用于快速查询,需要用jaxen...jar包 SAXReaderreader=newSAXReader(); Documentdoc=reader.read(newFile("src/demo.xml")); Nodenode=doc.selectSingleNode("/books/book[2]/author");//需要jaxen.jar包 Strings=node.getText(); System.out.println(s); node=doc.selectSingleNode("/books/book[2]/@name"); s=node.getText(); System.out.println(s); List J.K.Rowling 29.90$ 马丁 28.90$ booknames=doc.selectNodes("/books//@name"); for(Nodenode1:booknames){ System.out.println(node1.getText()); } List>nodes=doc.selectNodes("/books/*/*"); for(inti=0;i 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。