XML解析方式分为两种:dom和sax
dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的解析XML 的一种方式。
sax: (Simple API for XML) 不是官方标准,但它是 XML 社区事实上的标准,几乎所有的 XML 解析器都支持它。
XML解析器
Crimson(sun)、Xerces(IBM)、Aelfred2(dom4j)
XML解析开发包
Jaxp(sun)、Jdom、dom4j、pull(android的sdk自带)
JAXP是Sun 提供的一套XML解析APIJAXP很好的支持DOM和SAX解析方式JAXP 开发包是J2SE的一部分,包括以下包或子包javax.xmlorg.w3c.domorg.xml.sax在javax.xml.parsers 包中,定义了几个工厂类,程序员调用这些工厂类,可以得到对xml文档进行解析的DOM 或SAX 的解析器对象//获得实例工厂 *javax.xml.parsers.DocumentBuilderFactory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//获得解析 *javax.xml.parsers.DocumentBuilderFactory
DocumentBuilder builder = factory.newDocumentBuilder();
//获得document --解析xml文档 java.io.FileNotFoundException *org.w3c.dom.Document
Document document = builder.parse("books.xml"); //指java项目的根路径下的文件
2、获得需要的内容:获得所有的书籍
//获得所有的书籍元素
NodeList bookElements = document.getElementsByTagName("book");
3、遍历
* 获得长度
bookElements.getLength()
* 获得指索引的节点
bookElements.item(i);
* 通过元素获得,当前元素指定的属性
Element.getAttribute("id");
* 获得当前节点的名称
Node.getNodeName();
* 获得当前节点的子节点的所有文本
Node.getTextContent()
* 例如:<book><title>Java</title></book> --> 字符串"<title>Java</title>"
二、保存
//获得持久化对象实例工厂
TransformerFactory factory = TransformerFactory.newInstance();
//获得持久化对象
Transformer transformer = factory.newTransformer();
//将内存数据,保存到硬盘
//源:document 将document封装到Source
Source xmlSource = new DOMSource(document);
//结果:books.jasp.xml 将“文件路径”封装到Result
Result outputTarget = new StreamResult("books.jasp.xml");
transformer.transform(xmlSource, outputTarget);