Java 在jdk1.4中使用Xpath解析XML文件
我发现了以下从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
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