`
hotsheqaz
  • 浏览: 19830 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • hi_gp: hotsheqaz 写道hi_gp 写道为啥我按照你的示例,在 ...
    XML约束
  • hotsheqaz: hi_gp 写道为啥我按照你的示例,在book.xml中加上定 ...
    XML约束
  • hi_gp: 为啥我按照你的示例,在book.xml中加上定义的book.d ...
    XML约束

Jaxp对XML解析(一)

    博客分类:
  • xml
阅读更多

Jaxp对xml解析
JAXP开发包对java se的一部分,它是由javax.xml,org.w3x.dom,org.xml.sax包及其子包组成。
在javax.xml.parsers包中,定义了几个工厂类,当调用这些工厂类。可以得到xml文档的DOM或SAX的解析器,从而实现对XML文档的解析
javax.xml.parsers包中的DocumentBuilderFactory用于创建DOM模式的解析器对象,DocumentBuilderFactory是一个抽象工厂类,它不能直接实例化,但该类提供了一个newInstance方法,这个方法会根据本地平台默认安装的解析器,自动创建一个工厂的对象并返回。
在dom解析下,xml文档的每一个组成部分会用一个对象表示,例如标签用Element,属性用Attr,但不管什么对象,都是Node的子类,所以在开发中可以把获取到的任意都当作Node对待。

 

    举例

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

    例1:读取XML文档,取出 <书名>西游记</书名>节点中的值

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

		// 获取书名的节点
		NodeList list = document.getElementsByTagName("书名");
		Node node = list.item(0);
		String context = node.getTextContent();
		System.out.println(context);
	}
运行结果:
西游记
 

举例2: 得到XML文档所有标签

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

		Node root = document.getElementsByTagName("图书").item(0);
		list(root);
	}

	private void list(Node node) {
		if (node instanceof Element) {
			System.out.println(node.getNodeName());// 如果是元素就打印,否则就不打印
		}
		NodeList list = node.getChildNodes(); // 得到节点的孩子节点
		for (int i = 0; i < list.getLength(); i++) {
			Node child = list.item(i); // 得到孩子节点
			list(child); // 采用递归
		}
	}

 

运行结果:
图书
书
书名
作者
售价
书
书名
作者
售价

   举例3:读取XML文档标签属性的值:<书名 name="名著">西游记</书名>

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

		Element bookName = (Element) document.getElementsByTagName("书名").item(0);	
                String value = bookName.getAttribute("name");      
                System.out.println(value);
	}
运行结果:
名著
12
15
分享到:
评论

相关推荐

    使用JAXP之SAX读取XML内容

    总结起来,JAXP的SAX解析器为Java开发者提供了一种高效、低内存消耗的方式来处理XML文档。通过实现SAX事件接口,开发者可以根据XML结构自定义解析逻辑,非常适合处理大型或复杂结构的XML文件。理解并熟练掌握SAX解析...

    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

    下面是一个简单的示例,展示了如何使用SAX解析一个XML文件,并将其中的数据存储到对象中。 **XML文件内容 (Test.xml)** ```xml &lt;?xml version="1.0"?&gt; &lt;id&gt;#001 &lt;name&gt;Micke &lt;address&gt;Nanjing &lt;id&gt;#002 ...

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

    本篇文章将深入探讨XML解析的基本概念、解析方式以及在实际应用中的重要性。 一、XML的基本结构 1. 元素:XML文档的核心是元素,元素以尖括号 `和 `&gt;` 包裹,如 `&lt;element&gt;`。元素可以包含其他元素、属性和文本。...

    xerces-1.4.3 XML解析器

    Xerces,全称为Apache Xerces,是一款开源的XML解析器,由Apache软件基金会开发并维护。它为多种编程语言,包括Java,提供了强大的XML处理能力。Xerces-1.4.3是这个解析器的一个版本,它在XML标准的实现上具有高度的...

    XML文件解析问题.pdf

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

    JAXP 专述

    JAXP并不是一个XML解析器,而是一个API规范,它定义了一系列接口和类,让开发者能够选择和使用不同的XML解析器,如SAX或DOM。JAXP的目的是简化供应商特定的集成问题,它本身并不直接处理XML解析任务。 2. **与SAX...

    dom4j---xml解析jar包

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

    dom4j解析xml详解

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

    xml解析中文笔记.docx

    #### 一、XML解析器概览 - **解析器定义**:XML(可扩展标记语言)是一种用于存储和传输数据的格式,它以一种易于理解的方式组织数据。为了使程序能够读取并利用XML文件中的数据,需要使用专门的工具——XML解析器...

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

    需要注意的是,JAXP分发通常包含Sun自己的XML解析器(Crimson),但这并不意味着Crimson是JAXP的一部分。实际上,Crimson仅仅是JAXP的一个实现示例,而JAXP自身并不包含任何具体的解析器实现。因此,在使用JAXP时,...

    jaxp的四个jar包

    4. **xercesImpl.jar**:Xerces是Apache软件基金会开发的一个开源XML解析器,实现了SAX和DOM规范。xercesImpl.jar包含了Xerces的实现,包括SAX解析器和DOM解析器。Xerces还支持XML Schema和Namespaces,提供XML解析...

    XML解析的三个jar包

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

    xml jar 解析xml文件

    2. **xercesImpl.jar**:这个JAR包含了Apache Xerces的Java实现,Xerces是一个开源的XML解析器。它提供了DOM(Document Object Model)、SAX(Simple API for XML)和JAXP(Java API for XML Processing)等接口的...

    java xml文件解析

    DOM4J是一个基于Java的高效XML解析库,它是对DOM和SAX API的一个简单而强大的封装。DOM4J提供了更简洁的API,使得XML的解析和操作更加容易。DOM4J已成为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