`
hotsheqaz
  • 浏览: 19941 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Jaxp对xml解析(二)

    博客分类:
  • xml
阅读更多

Javax.xml.transform包中的Transformer类用于把代表Xml文件的Document对象转换成某种格式进行输出,例如把xml文件应用转换成HTML,利用这个对象,当然也可以把Document重新写出一个xml文件中去。
Transformer类通过transfor方法完成转换操作,该方法接受一个源和一个目的地:
Javax.xml.transform.DOMSource类关联要转换的document,
Javax.xml.transform.streamResult类对象来表示数据的目的地。

Transformer对象通过TransformerFactory获得

 

 

举例4:    删除<售价>18</售价>  节点

文件book.xml
<?xml version="1.0" encoding="UTF-8"?>
<图书>
      <书>
           <书名>西游记</书名>
	  <作者>吴承恩</作者>
	  <售价>18</售价>  
	  <售价>19</售价>  
      </书>
      <书>
           <书名>三国演义</书名>
            <作者>罗贯中</作者>  
	    <售价>20</售价>
     </书> 
</图书>

  方法一: 

    @Test
	//删除节点
	public void delete1() throws Exception {
		// 得到工厂
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// 得到DOM解析器
		DocumentBuilder builder = factory.newDocumentBuilder();
		// 解析XML文档
		Document document = builder.parse("src/com/it/book.xml");

		//得到删除的节点
		Element reNode = (Element) document.getElementsByTagName("售价").item(0);
		//得到删除节点的父亲节点
		Element book = (Element) document.getElementsByTagName("书").item(0);
		//删除父亲节点下的孩子节点
		book.removeChild(reNode);
		// 把更新后内存重新写到XML文档中去
		TransformerFactory tffactory = TransformerFactory.newInstance();
		Transformer tf = tffactory.newTransformer();
		tf.transform(new DOMSource(document), new StreamResult(
				new FileOutputStream("src/com/it/book.xml")));
	}

   方法二:

    @Test
	//删除节点
	public void delete2() throws Exception {
		// 得到工厂
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// 得到DOM解析器
		DocumentBuilder builder = factory.newDocumentBuilder();
		// 解析XML文档
		Document document = builder.parse("src/com/it/book.xml");

		//得到删除的节点
		Element reNode = (Element) document.getElementsByTagName("售价").item(0);
		//删除父亲节点下的孩子节点
		reNode.getParentNode().removeChild(reNode);
		
		// 把更新后内存重新写到XML文档中去
		TransformerFactory tffactory = TransformerFactory.newInstance();
		Transformer tf = tffactory.newTransformer();
		tf.transform(new DOMSource(document), new StreamResult(
				new FileOutputStream("src/com/it/book.xml")));
	}   
运行结果:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><图书>
      <书>
      <书名 name="dddd">西游记</书名>
	  <作者>吴承恩</作者>
	    
	  <售价>19</售价>  
      </书>
      <书>
      <书名>三国演义</书名>
      <作者>罗贯中</作者>  
	  <售价>20</售价>
     </书> 
</图书>

    举例5:删除第一本书全部节点

@Test
	//删除节点
	public void delete3() throws Exception {
		// 得到工厂
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// 得到DOM解析器
		DocumentBuilder builder = factory.newDocumentBuilder();
		// 解析XML文档
		Document document = builder.parse("src/com/it/book.xml");

		//得到删除的节点
		Element reNode = (Element) document.getElementsByTagName("售价").item(0);
		//删除爷爷节点下的父亲节点
		reNode.getParentNode().getParentNode().removeChild(reNode.getParentNode());
		
		// 把更新后内存重新写到XML文档中去
		TransformerFactory tffactory = TransformerFactory.newInstance();
		Transformer tf = tffactory.newTransformer();
		tf.transform(new DOMSource(document), new StreamResult(
				new FileOutputStream("src/com/it/book.xml")));
	}  
运行结果:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><图书>
      
      <书>
      <书名>三国演义</书名>
      <作者>罗贯中</作者>  
	  <售价>20</售价>
     </书> 
</图书>

   举例6:删除全部节点

       @Test
	public void delete4() throws Exception {
		// 得到工厂
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// 得到DOM解析器
		DocumentBuilder builder = factory.newDocumentBuilder();
		// 解析XML文档
		Document document = builder.parse("src/com/it/book.xml");

		//得到删除的节点
		Element reNode = (Element) document.getElementsByTagName("售价").item(0);
reNode.getParentNode().getParentNode().getParentNode().removeChild(reNode.getParentNode().getParentNode());
		
		// 把更新后内存重新写到XML文档中去
		TransformerFactory tffactory = TransformerFactory.newInstance();
		Transformer tf = tffactory.newTransformer();
		tf.transform(new DOMSource(document), new StreamResult(
				new FileOutputStream("src/com/it/book.xml")));
	}
运行结果:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

   举例7:更新节点<售价>18</售价> 的值 

    @Test
    public void update() throws Exception{
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// 得到DOM解析器
		DocumentBuilder builder = factory.newDocumentBuilder();
		// 解析XML文档
		Document document = builder.parse("src/com/it/book.xml");

		//得到节点
		Element reNode = (Element) document.getElementsByTagName("售价").item(0);
		//更新节点上的值 
		reNode.setTextContent("21");
		// 把更新后内存重新写到XML文档中去
		TransformerFactory tffactory = TransformerFactory.newInstance();
		Transformer tf = tffactory.newTransformer();
		tf.transform(new DOMSource(document), new StreamResult(
				new FileOutputStream("src/com/it/book.xml")));
    }
运行结果:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><图书>
      <书>
      <书名>西游记</书名>
	  <作者>吴承恩</作者>
	  <售价>21</售价>   
      </书>
      <书>
      <书名>三国演义</书名>
      <作者>罗贯中</作者>  
	  <售价>20</售价>
     </书> 
</图书>
13
24
分享到:
评论

相关推荐

    使用JAXP之SAX读取XML内容

    程序通过实现这些事件接口,对解析过程进行控制,从而实现对XML内容的处理。这种方法的优点在于内存占用小,适用于处理大型XML文件。 接下来,我们来看看如何在Java中使用JAXP的SAX解析器。首先,确保引入了JAXP...

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

    本文将深入探讨XML的解析方式之一——JAXP(Java API for XML Processing),并提供一个简单的JAXP解析XML项目的概述。 ### JAXP简介 JAXP是Java平台上的标准API,它提供了处理XML的两种主要方法:解析和转换。在...

    XML_JAVA指南.rar_WORKING_java Tutorial_java xml_jaxp_xml

    在Java中,处理XML文档时,Java API for XML Parsing(JAXP)是一个核心工具集,它提供了在Java环境中解析XML的接口和类。 **XML的基本概念** XML文档由元素、属性、文本和注释组成。元素是XML文档的基本构建块,...

    Jaxp_xml.rar_J2ME 程序_j2me_j2me xml_j2me 网络

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

    使用JAXP处理XML文件.pdf

    ### 使用JAXP处理XML文件的关键知识点 #### JAXP简介 JAXP(Java API for XML Processing)是Java平台中处理XML文档的标准API之一。它主要包括两大块:DOM(Document Object Model)和SAX(Simple API for XML)。...

    解析xml解析xml解析xml解析xml解析xml

    二、XML解析方式 1. DOM解析:Document Object Model(DOM)解析器将整个XML文档加载到内存中,形成一棵元素树,便于遍历和修改。这种方式适合小到中型的XML文件,因为内存消耗较大。 2. SAX解析:Simple API for ...

    xerces-1.4.3 XML解析器

    **Xerces-1.4.3 XML解析器详解**...无论是需要全面的DOM解析,还是高效的SAX处理,或者通过JAXP集成XML解析,Xerces都能提供稳定且高效的支持。其开源性质和广泛的社区支持也使得它成为了XML处理领域不可或缺的一部分。

    XML文件解析问题.pdf

    本文对四种主流的 XML 文件解析方案进行了比较,包括 DOM(JAXP Crimson 解析器)、SAX(JAXP Crimson 解析器)、JDOM 和 dom4j。比较的结果表明,DOM 解析方式具有较高的解析速度,但占用较高的内存,而 SAX 解析...

    dom4j解析xml详解

    DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时的强大工具。DOM4J的最大亮点在于其简洁易用的API...

    dom4j---xml解析jar包

    **DOM4J——XML解析库详解** XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行...

    JAXP 专述

    JAXP不提供新的XML处理方式,而是对SAX(Simple API for XML)和DOM(Document Object Model)这两个流行的XML解析API进行了封装,使得它们的使用更加方便和统一。 **JAXP的基本概念** 1. **API与抽象层的区别** ...

    xml解析中文笔记.docx

    - **概念**:JAXP是由Sun Microsystems(现已被Oracle收购)提供的标准Java API,用于统一管理不同的XML解析器,如xerces等。它为DOM和SAX提供了一个统一的接口,简化了切换不同解析器的过程。 - **优势**:使用...

    XML解析的三个jar包

    XML解析是将XML文档转换为程序可以理解的数据结构的过程,这在Java编程中尤为重要。在Java中,有多种XML解析器,通常分为DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)...

    jaxp的四个jar包

    它定义了如`javax.xml.parsers`和`javax.xml.transform`等包,供开发者创建XML解析器和转换器。`javax.xml.parsers.DocumentBuilderFactory`和`javax.xml.transform.TransformerFactory`分别是用于创建DOM解析器和...

    xml jar 解析xml文件

    JAXP则是Java平台的标准API,可以用来处理XML解析和转换。 3. **xml-apis.jar**:这个库包含了XML API的基本组件,包括了SAX和DOM的部分接口定义。它是许多XML解析器的基础,提供了与XML相关的标准Java接口,使得...

    java xml文件解析

    DOM4J是一个基于Java的高效XML解析库,它是对DOM和SAX API的一个简单而强大的封装。DOM4J提供了更简洁的API,使得XML的解析和操作更加容易。DOM4J已成为XML解析的一种流行选择。 ### 性能对比 不同解析方式之间的...

    JAXP 专述――Sun 的 Java API for XML 语法分析

    《深入解析JAXP:Sun的Java API for XML解析》 在探讨JAXP(Java API for XML Processing)这一主题时,我们需首先明确其在Java与XML领域中的定位与价值。JAXP并非旨在革新XML处理的方式,也不提供额外的语法分析...

    xml解析jar包

    为了在Java环境中处理XML文档,我们需要引入特定的jar包,这些jar包提供了XML解析的API。 在Java中,有两种主要的XML解析技术:DOM(Document Object Model)和SAX(Simple API for XML)。DOM将整个XML文档加载到...

Global site tag (gtag.js) - Google Analytics