`
哈达f
  • 浏览: 114838 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

JAXP解析XML文档

    博客分类:
  • XML
 
阅读更多

 

其实用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"));
	}
	
}
 

 

分享到:
评论

相关推荐

    使用jaxp开发包中的SAX方式解析xml文档

    day02_xml *demo01.App1\App2\App3 使用jaxp开发包中的SAX方式解析xml文档,该方式只能读取文档 *demo4j01.App dom4j CURD XML *domo4j.ex 对dom4j 的封装例子

    经典的DOM解析XML范例

    用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)...

    java解析xml及4种常用解析比较

    SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员...

    Jaxp_xml.rar_J2ME 程序_j2me_j2me xml_j2me 网络

    j2me实现xml格式文件的解析,对想开发网络程序是一个不错的例子。

    Android 解析XML 文件的四种方法总结

    java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定...

    Dom4j 解析XML

    与利用DOM、SAX、JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异、功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml。dom4j是一套开源的api。实际项目中,往往选择...

    4种常见的xml解析方法

    DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以 层次结构组织的节点或信息片断的集合。

    开源XML解析包dom4j

    一个很好的用来解析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 ...

    java_Dom4j解析XML详解

    DOM4J是 dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。  DOM4J 使用起来非常简单。只要你了解基本的 XML-DOM 模型,就能使用。  Dom:把整个...

    疯狂xml讲义

    第三部分介绍了DOM、SAX、JAXP、dom4j、JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery...

    疯狂XML讲义 源码

    第三部分介绍了DOM、SAX、JAXP、dom4j、JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4i和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过X Query...

    XML_dom_sax_dom4j:XML解析技术之dom、Sax、dom4j以及XML Schema技术约束

    dom(文档对象模型)是W3C组织推荐的解析XML文档的一种方式,使用dom API解析XML文档时,它是将整文档一次加载到内存生成一个dom树,在进行增加新元素时,需要先创建元素,然后将其挂载到指定元素前方,之后还需要将...

    疯狂XML讲义.part3.rar

    第三部分介绍了DOM、SAX、JAXP、dom4j、JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery...

    疯狂XML讲义

    第三部分介绍了DOM、SAX、JAXP、dom4j、, JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的, 方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而, XQuery则是一种新规范,通过...

    XML解析包(xalan.jar+xerces.jar+xml-apis.jar)

    当项目报关于XML文件无法解析的错误, 将三个包拷贝到tomcat或项目的lib文件夹下 xalan.jar, xerces.jar, xml-apis.jar: Xerces是XML解析器,Xalan是格式化器,xml-apis实际上是JAXP。一般App Server都会带上,JDK...

    疯狂XML讲义(Web Service).pdf

    第三部分介绍了DOM、SAX、JAXP、dom4j、JDOM、XQuery和XQJ等,其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery...

    Java编程中更新XML文档的常用方法

     JAXP是Java API for XML Processing的英文字头缩写,中文含义是:用于XML文档处理的使用Java语言编写的编程接口。JAXP支持DOM、SAX、XSLT等标准。为了增强JAXP使用上的灵活性,开发者特别为JAXP设计了一个...

Global site tag (gtag.js) - Google Analytics