其实用JAXP去解析XML文档离不开几个常用的工厂,
第一:DocumentBuilderFactory (文档解析器工厂)
这个工厂可以获得DocumentBuilder,文档解析器。
有了文档解析器就可以去解析我们的XML文件,db.parse("src/book.xml");
第二:TransformerFactory (转换器工厂)
这个工厂可以换的Transforme转换器,
有了转换器我们就可以tf.transform(DOMSource, StreamResult("src/book.xml"));
这样就可以实现了解析XML和对XML文档进行CURD操作了。
例如:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<书架>
<书>
<书名>魔鬼</书名>
<作者>蓝</作者>
<售价>20</售价>
<数量>30</数量>
</书>
</书架>
package com;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class JaxpTest {
public static void main(String[] args) throws Exception {
// 1.创建工厂
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 2.通过工厂获得文档解析器。
DocumentBuilder db = dbf.newDocumentBuilder();
// 3.解析指定的dom文件,获得dom
Document dom = db.parse("src/book.xml");
NodeList nodes = dom.getElementsByTagName("书名");
System.out.println(nodes.getLength());
System.out.println(nodes.item(0).getTextContent());
Node node = dom.getElementsByTagName("书架").item(0);
list(node);
}
// 遍历所有节点
public static void list(Node node) {
System.out.println(node.getNodeName());
NodeList list = node.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
Node child = list.item(i);
list(child);
}
}
// 增加节点
@Test
public void test1() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document dom = db.parse("src/book.xml");
Node sum = (Node) dom.createElement("数量");
sum.setTextContent("30");
Node node = dom.getElementsByTagName("书").item(0);
node.appendChild(sum);
TransformerFactory tff = TransformerFactory.newInstance();
Transformer tf = tff.newTransformer();
tf.transform(new DOMSource(dom), new StreamResult("src/book.xml"));
}
//删除节点
@Test
public void test2() throws Exception{
//1.获得解析器工厂类
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//2.由工厂类获取解析器
DocumentBuilder db = dbf.newDocumentBuilder();
//3.由解析器去解析XML文档
Document document = db.parse("src/book.xml");
Node sumNode = (Node)document.getElementsByTagName("数量").item(0);
Node pNode = sumNode.getParentNode().getParentNode().getParentNode();
pNode.removeChild(sumNode.getParentNode().getParentNode());
//1.获得转换工厂
TransformerFactory tff = TransformerFactory.newInstance();
//2.获得转换器
Transformer tf = tff.newTransformer();
//3.执行转换工作
tf.transform(new DOMSource(document), new StreamResult("src/book.xml"));
}
//更新节点
@Test
public void test3() throws Exception{
//1.获得解析器工厂类
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//2.由工厂类获得解析器
DocumentBuilder db = dbf.newDocumentBuilder();
//3.由解析器去解析XML文档
Document document = db.parse("src/book.xml");
Node bookNode = document.getElementsByTagName("书").item(0);
bookNode.setTextContent("100");
//1.获得转换工厂类
TransformerFactory tff = TransformerFactory.newInstance();
//2.由工厂类获得转换器
Transformer tf = tff.newTransformer();
//3.由转化器去执行转换工作
tf.transform(new DOMSource(document), new StreamResult("src/book.xml"));
}
}
分享到:
相关推荐
day02_xml *demo01.App1\App2\App3 使用jaxp开发包中的SAX方式解析xml文档,该方式只能读取文档 *demo4j01.App dom4j CURD XML *domo4j.ex 对dom4j 的封装例子
用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)...
SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员...
j2me实现xml格式文件的解析,对想开发网络程序是一个不错的例子。
java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定...
与利用DOM、SAX、JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异、功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml。dom4j是一套开源的api。实际项目中,往往选择...
DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以 层次结构组织的节点或信息片断的集合。
一个很好的用来解析XML文件的解析包 DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform ...
DOM4J是 dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。 DOM4J 使用起来非常简单。只要你了解基本的 XML-DOM 模型,就能使用。 Dom:把整个...
第三部分介绍了DOM、SAX、JAXP、dom4j、JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery...
第三部分介绍了DOM、SAX、JAXP、dom4j、JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4i和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过X Query...
dom(文档对象模型)是W3C组织推荐的解析XML文档的一种方式,使用dom API解析XML文档时,它是将整文档一次加载到内存生成一个dom树,在进行增加新元素时,需要先创建元素,然后将其挂载到指定元素前方,之后还需要将...
第三部分介绍了DOM、SAX、JAXP、dom4j、JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery...
第三部分介绍了DOM、SAX、JAXP、dom4j、, JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的, 方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而, XQuery则是一种新规范,通过...
当项目报关于XML文件无法解析的错误, 将三个包拷贝到tomcat或项目的lib文件夹下 xalan.jar, xerces.jar, xml-apis.jar: Xerces是XML解析器,Xalan是格式化器,xml-apis实际上是JAXP。一般App Server都会带上,JDK...
第三部分介绍了DOM、SAX、JAXP、dom4j、JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery...
JAXP是Java API for XML Processing的英文字头缩写,中文含义是:用于XML文档处理的使用Java语言编写的编程接口。JAXP支持DOM、SAX、XSLT等标准。为了增强JAXP使用上的灵活性,开发者特别为JAXP设计了一个...