`
schy_hqh
  • 浏览: 555809 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

使用java提供的XPATH处理xml

 
阅读更多
books.xml
<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

<book category="COOKING">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

<book category="WEB">
  <title lang="en">XQuery Kick Start</title>
  <author>James McGovern</author>
  <author>Per Bothner</author>
  <author>Kurt Cagle</author>
  <author>James Linn</author>
  <author>Vaidyanathan Nagarajan</author>
  <year>2003</year>
  <price>49.99</price>
</book>

<book category="WEB">
  <title lang="en">Learning XML</title>
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>

</bookstore>


基于java提供的API使用XPath处理XML
package com.hqh.stax;

import java.io.InputStream;

import javax.xml.crypto.NodeSetData;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;

import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class TestXPath {

	@Test
	public void testXPath() {
		InputStream is = null;
		try {
			// 将xml以流才形式进行加载
			is = Thread.currentThread().getContextClassLoader()
					.getResourceAsStream("books.xml");
			//构建文檔对象
			DocumentBuilder builder = DocumentBuilderFactory.newInstance()
					.newDocumentBuilder();
			// 将xml的输入流解析为一个dom对象
			Document doc = builder.parse(is);
			
			//創建XPath對象
			XPath xpath = XPathFactory.newInstance().newXPath();
			//第一個參數:xpath表達式;第二個參數:文檔源;第三個參數:返回類型
			NodeList nodeList = (NodeList)xpath.evaluate("//book[@category='WEB']", doc, XPathConstants.NODESET);
			
			//輸出屬性為WEB的book所有信息[將輸出該節點下的所有信息]
			for(int i=0;i<nodeList.getLength();i++) {
				Node node = nodeList.item(i);
				System.out.println(node.getTextContent());
			}
			
/*			  結果:
			  XQuery Kick Start
			  James McGovern
			  Per Bothner
			  Kurt Cagle
			  James Linn
			  Vaidyanathan Nagarajan
			  2003
			  49.99


			  Learning XML
			  Erik T. Ray
			  2003
			  39.95*/
			
			//輸出屬性為'WEB'的book的title信息
			for(int i=0;i<nodeList.getLength();i++) {
				Node node = nodeList.item(i);
				Element element = (Element)node;
				Node subNode = element.getElementsByTagName("title").item(0);
				System.out.println(subNode.getTextContent());
			}
			
/*			結果:
 			XQuery Kick Start
			Learning XML*/
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {

		}

	}
}

分享到:
评论

相关推荐

    Java中使用xpath获取xml中的数据

    在处理大型XML文档时,使用XPath配合Java进行数据提取,可以避免遍历整个DOM结构,从而提高性能。 总结,Java中使用XPath获取XML数据涉及的关键知识点包括: 1. XPath的基本概念和语法。 2. Java的`javax.xml.xpath...

    xpath读取XML节点

    总之,XPath和JDOM结合使用,为Java开发者提供了一种强大而灵活的方式来处理XML数据。理解XPath语法,掌握JDOM的API,将使你在处理XML文档时更加得心应手。在实际项目中,你可以根据需求调整和优化这些基本步骤,...

    java xml xpath介绍

    总之,Java XML XPath 提供了一种强大而灵活的方式来处理XML数据,使得在Java应用程序中检索和操作XML内容变得更加容易。开发者可以根据需要的路径表达式和谓语来精确地定位和操作XML文档中的任何部分。

    java使用xpath解析xml示例分享

    以下是使用Java的XPath API解析XML文档的一个详细步骤: 1. **创建Document对象**: 首先,我们需要解析XML文件,生成一个`Document`对象。这通常通过`DocumentBuilderFactory`和`DocumentBuilder`完成。以下代码...

    JAVA通过XPath解析XML性能比较详解

    Java 通过XPath解析XML是一种常见的数据提取和处理方式,尤其在处理复杂XML文档时,XPath提供了简洁而强大的查询语句。XPath(XML Path Language)允许我们根据元素、属性以及它们之间的关系来定位XML文档中的节点。...

    Dom4j结合XPath解析XML文件路径表达式

    Dom4j是一个灵活且高效的处理XML的Java库,它提供了XML的读写、遍历、修改等功能。与DOM(Document Object Model)相比,Dom4j使用起来更高效,内存占用更小,尤其适合处理大型XML文件。 接下来,我们关注XPath的...

    xpath解析xml

    例如,我们可以使用`javax.xml.xpath`包提供的`XPathFactory`、`XPath`和`XPathConstants`类来实现这一过程。 4. **避免生成过多的Bean类** 当XML结构复杂时,通常会为每个元素创建对应的Java Bean类。然而,使用...

    Java版本的XPath方式解析jar和源代码

    Java提供了多种库来支持XPath的使用,如JAXP(Java API for XML Processing)和DOM4J等。 Java中的XPath工作原理是基于XML文档的DOM(Document Object Model)树,通过XPath表达式定位到DOM树上的特定节点。XPath...

    Java通过XPath获取XML文件中符合特定条件的节点

    Java提供了一个XPath的实现,即javax.xml.xpath包,通过该包可以使用XPath来获取XML文档中的节点。 在获取XML文件中符合特定条件的节点时,需要使用XPath表达式。XPath表达式是一种特殊的字符串,用于描述要获取的...

    xpath--java框架技术

    Java通过JAXP(Java API for XML Processing)提供对XPath的支持,允许开发者高效地定位和操作XML文档。 XPath的语法基于路径表达式,这些表达式可以指向XML文档中的特定节点。例如,`/html/body/p` 是一个路径...

    dom+xpath读取xml并导入oracle.rar

    在Java中,我们可以使用javax.xml.xpath.XPath和XPathConstants类来执行XPath查询: ```java import javax.xml.xpath.*; import org.w3c.dom.NodeList; import org.w3c.dom.Node; XPathFactory xPathFactory = ...

    Dom,Sax,Xpath解析XML实例

    在处理XML时,我们通常会使用三种主要的解析方式:DOM(Document Object Model)、SAX(Simple API for XML)和XPath(XML Path Language)。下面将详细介绍这三种解析方法,并结合实例进行讲解。 1. DOM解析: DOM...

    用java读取修改xml文件的代码实现

    Java提供`javax.xml.xpath`包来支持XPath表达式的编译和执行,可以用来定位和修改XML节点。 8. **XML Schema**: Java还提供了处理XML Schema(XSD)的能力,可以验证XML文档是否符合特定的模式。`javax.xml....

    java 处理xml的三种技术

    Java 处理XML的三种主要技术分别是DOM(Document Object Model)、SAX(Simple API for XML)...总之,Java提供了多样化的XML处理工具,开发者可以根据需求选择合适的解析方式,以实现高效、稳定和灵活的XML数据处理。

    java 写的xpath生成工具

    - **Java的XPath API**:Java标准库提供`javax.xml.xpath`包,包含`XPath`、`XPathFactory`、`XPathExpression`等类,用于解析和执行XPath表达式。 - **创建XPath对象**:使用`XPathFactory.newInstance()....

    java_xml_api,java操作XML文档

    Java XML API是Java平台提供的一套用于处理XML文档的接口和类,它使得开发者能够方便地在Java程序中创建、解析、修改XML文档。本文将深入探讨Java XML API中的核心组件,包括SAX(Simple API for XML)、DOM...

    java xpath demo

    在Java中,XPath与Java API for XML Processing(JAXP)一起使用,可以方便地解析和操作XML文档。本Java XPath Demo将向你展示XPath在实际开发中的应用。 首先,你需要了解XPath的基本语法。XPath表达式是由路径...

    java处理xml文件

    - **XStream:** 是一个轻量级、易于使用的库,支持将Java对象转换为XML,反之亦然,它提供了更简洁的API和更灵活的XML格式。 3. **DOM4J:** 这是一个非常流行的Java XML库,它扩展了DOM API,提供了一些额外的...

    xpath生成xml

    1.可以根据传入的xpath,生成xml,例如:a/b/c : &lt;a&gt;&lt;b&gt;&lt;c&gt;&lt;/c&gt;&lt;/b&gt;&lt;/a&gt; 2.可以将指定xml字符串添加指定节点 3.xmldocument2String 4.支持属性操作 看到网上几乎没有这样的例子,贡献一下,中国的软件太需要贡献了...

Global site tag (gtag.js) - Google Analytics