`
哈达f
  • 浏览: 119557 次
  • 性别: 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"));
	}
	
}
 

 

分享到:
评论

相关推荐

    XML的Jaxp解析示例和简单项目

    以下是一个简单的JAXP解析XML文件的Java代码示例: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom....

    XML_JAVA指南.rar_WORKING_java Tutorial_java xml_jaxp_xml

    使用JAXP解析XML文档的步骤大致如下: 1. 加载解析器工厂:`javax.xml.parsers.DocumentBuilderFactory`或`javax.xml.parsers.SAXParserFactory`。 2. 创建解析器:通过工厂的`newDocumentBuilder()`或`newSAXParser...

    使用JAXP之SAX读取XML内容

    SAX解析器逐行读取XML文件,当遇到XML文档的各个元素、属性等结构时,会触发相应的事件回调,如开始文档、结束文档、开始元素、结束元素等。程序通过实现这些事件接口,对解析过程进行控制,从而实现对XML内容的处理...

    使用JAXP处理XML文件.pdf

    - **SAXParser**:提供了一种基于事件的解析XML文档的方式,通常用于处理大文件或实时流数据。 - **DocumentBuilder**:用于构建DOM树,便于后续对文档的随机访问和修改。 ##### org.w3c.dom - 定义了DOM中的一系列...

    解析xml文件需要的jar包

    通常,解析XML可能需要如`jaxp-1.3.jar`(Java API for XML Processing)、`xml-apis.jar`(XML API)、`sax.jar`(SAX解析器)或`dom4j.jar`(DOM4J库)等库。然而,提供的文件列表`Global.asax`、`gui.ascx`、`...

    Java解析XML文件的DOM和SAX方式.doc

    在 Java 中使用 DOM 方式解析 XML 文件需要使用 JAXP(Java API for XML Processing),首先需要创建一个解析器工厂,然后使用工厂创建一个具体的解析器对象。然后,使用解析器对象来解析 XML 文件,得到一个 ...

    java dom 解析 xml 实例

    Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...

    Jaxp_xml.rar_J2ME 程序_j2me_j2me xml_j2me 网络

    J2ME版本的JAXP通常只包含XML解析器,用于读取和解析XML文档,而不包括XSLT(XML样式表转换)和DOM(文档对象模型)处理。在J2ME中,我们通常使用SAX(Simple API for XML)解析器,它是一种事件驱动的解析方法,...

    java解析xml文档的常用方法

    "java解析xml文档的常用方法" Java 解析 XML 文档的常用方法有四种:DOM、SAX、JDOM 和 DOM4J。下面对这四种方法进行详细的介绍: 1. 使用 DOM(JAXP Crimson 解析器) DOM(Document Object Model)是一种以层次...

    java解析xml的四种经典方法

    在上述代码中,我们使用了JAXP(Java API for XML Processing)中的`DocumentBuilderFactory`和`DocumentBuilder`来创建并解析XML文件。`getElementsByTagName()`用于获取指定标签的节点列表,然后通过`item()`方法...

    经典的DOM解析XML范例

    在Java中,解析XML文档有多种方式,其中DOM(Document Object Model)和SAX(Simple API for XML)是最常见的两种。DOM是一种基于树形结构的XML处理方式,它将整个XML文档加载到内存中,形成一个完整的对象模型,...

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    XML课件加例子源码

    最后,“Chapter5 使用DOM、SAX和JAXP解析XML文档.ppt”和“Chapter5 使用DOM、SAX和JAXP解析XML文档.pptx”将介绍XML的解析方法。DOM(Document Object Model)是将整个XML文档加载到内存中形成一棵树状结构,方便...

    xml jar 解析xml文件

    XPath(XML Path Language)则是一种查询XML文档中节点的语言。使用Xalan,开发者可以编写XSLT样式表来转换XML数据,实现数据的格式化和筛选。 2. **xercesImpl.jar**:这个JAR包含了Apache Xerces的Java实现,...

    Java解析XML文件

    `DocumentBuilderFactory`用于创建`DocumentBuilder`实例,而`DocumentBuilder`则负责解析XML文档并将其转换为DOM树结构。一旦DOM树构建完成,开发人员便可以通过`Node`、`Element`、`Attr`等接口访问树中的各个节点...

    dom4j解析XML文档.ppt

    DOM4J是一个强大的Java库,专门用于解析XML文档。它提供了简单易用的API,使得开发者可以更加方便地处理XML数据。DOM4J的核心优势在于它的面向接口编程设计,这使得它能够在不同的解析机制间灵活切换,如DOM、SAX和...

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

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

    Dom方式解析XML

    - **创建解析器**:接着,我们使用`DocumentBuilderFactory`创建一个`DocumentBuilder`实例,该实例用于解析XML文档。 ```java DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); ...

    使用Digester解析XML文档示例

    ### 使用Digester解析XML文档示例 #### 一、Digester简介与应用场景 Digester是Apache Jakarta项目下的一个工具类库,它简化了基于SAX(Simple API for XML)的XML解析过程。Digester能够根据定义好的规则自动将...

    java解析XML的4种经典方法

    DOM解析器如JAXP的Crimson,会一次性加载整个XML文档,因此对于小到中等大小的文档,DOM提供了方便的API进行数据访问和修改。但是,由于全量加载,对于大文件,DOM可能会消耗大量内存且解析速度较慢。 示例代码展示...

Global site tag (gtag.js) - Google Analytics