Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在jdk1.4中使用Xpath解析XML文件_Java_Xml_Xpath - Fatal编程技术网

Java 在jdk1.4中使用Xpath解析XML文件

Java 在jdk1.4中使用Xpath解析XML文件,java,xml,xpath,Java,Xml,Xpath,我发现了以下从XML文件中提取值的简单解决方案 import java.io.IOException; import org.w3c.dom.*; import org.xml.sax.SAXException; import javax.xml.parsers.*; import javax.xml.xpath.*; public class XPathExample { public static void main(String[] args) throws ParserC

我发现了以下从XML文件中提取值的简单解决方案

import java.io.IOException;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.*;
import javax.xml.xpath.*;

public class XPathExample {

  public static void main(String[] args) 
   throws ParserConfigurationException, SAXException, 
          IOException, XPathExpressionException {

    DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
    domFactory.setNamespaceAware(true); // never forget this!
    DocumentBuilder builder = domFactory.newDocumentBuilder();
    Document doc = builder.parse("c:/temp/books.xml");

    XPathFactory factory = XPathFactory.newInstance();
    XPath xpath = factory.newXPath();
    XPathExpression expr 
     = xpath.compile("//book[author='Neal Stephenson']/title/text()");

    Object result = expr.evaluate(doc, XPathConstants.NODESET);
    NodeList nodes = (NodeList) result;
    for (int i = 0; i < nodes.getLength(); i++) {
        System.out.println(nodes.item(i).getNodeValue()); 
    }

  }

}
import java.io.IOException;
导入org.w3c.dom.*;
导入org.xml.sax.SAXException;
导入javax.xml.parsers.*;
导入javax.xml.xpath.*;
公共类XPathExample{
公共静态void main(字符串[]args)
抛出ParserConfiguration异常、SAXException、,
IOException,XPathExpressionException{
DocumentBuilderFactory domFactory=DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);//永远不要忘记这一点!
DocumentBuilder=domFactory.newDocumentBuilder();
documentdoc=builder.parse(“c:/temp/books.xml”);
XPathFactory=XPathFactory.newInstance();
XPath=factory.newXPath();
XPathExpression
=xpath.compile(//book[author='Neal Stephenson']/title/text());
Object result=expr.evaluate(doc,XPathConstants.NODESET);
节点列表节点=(节点列表)结果;
对于(int i=0;i
这将使用xpath从以下xml中提取作者为Neal Stephenson的所有书名

<inventory>
<book year="2000">
    <title>Snow Crash</title>
    <author>Neal Stephenson</author>
    <publisher>Spectra</publisher>
    <isbn>0553380958</isbn>
    <price>14.95</price>
</book>

<book year="2005">
    <title>Burning Tower</title>
    <author>Larry Niven</author>
    <author>Jerry Pournelle</author>
    <publisher>Pocket</publisher>
    <isbn>0743416910</isbn>
    <price>5.99</price>
</book>

<book year="1995">
    <title>Zodiac</title>
    <author>Neal Stephenson</author>
    <publisher>Spectra</publisher>
    <isbn>0553573862</isbn>
    <price>7.50</price>
</book>

<!-- more books... -->

</inventory>

雪崩
尼尔·斯蒂芬森
光谱
0553380958
14.95
燃烧塔
拉里·尼文
杰里·波内尔
口袋
0743416910
5.99
生肖
尼尔·斯蒂芬森
光谱
0553573862
7.50
现在这在JDK5上运行良好,但我使用的是JDK1.4 是否可以将其转换为java 1.4等效版本

我所要做的就是从xml元素中提取一个值。例如,在上面的xml中,我只需要与getElementByTag(“title”)等价的东西


感谢Quick google提供了像和这样的链接,确认JAXP可以单独下载并在JDK 1.4.2上运行。您可能会遇到apache链接中提到的配置问题。祝你好运

没有外部下载是不可能的吗?对不起,伙计,我有点困惑。我以为JAXP已经在1.4中了。请看,这是1.4中的DOM解析器,不是JAXP的一部分?JAXP只是一个接口。您还需要一个实现,而XPath实现javax.xml.XPath是在JDK5中引入的。也就是说,您可以下载1.4.Hi版本的实现,请参阅文档末尾的内容,它说jdk1.4中内置了JAXP的实现。我不太理解可下载实现和jdk1.4中包含的实现之间的区别,以及为什么我不能访问内置实现我以为您需要XPath支持。我相信JAXP 1.3版中提供了Xpath支持。JDK1.4中构建的是JAXP1.1,它不支持Xpath