我有一个XML: -
<?xml version="1.0" encoding="UTF-8" ?>
<sample>
<book year="2005">
<title>Tower</title>
<author>Niven</author>
<author>Pournelle</author>
<publisher>Pocket</publisher>
<isbn>0743416910</isbn>
<price>5.99</price>
</book>
<book year="2005ad">
<title>Burning</title>
<author>Larry</author>
<publisher>ABC</publisher>
<isbn>096543</isbn>
<price>0.99</price>
</book>
</sample>
我正在使用XPath来获取使用年份的所有字段。
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("sample.xml");
XPathFactory xpathfactory = XPathFactory.newInstance();
XPath xpath = xpathfactory.newXPath();
XPathExpression expr = xpath.compile("//book[@year=2005]/*");
// xpath.compile("//book[@year=2005ad]/*");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
Element el = (Element) nodes.item(i);
System.out.println("tag: " + el.getNodeName());
if (el.getFirstChild().getNodeType() == Node.TEXT_NODE)
System.out.println("inner value:" + el.getFirstChild().getNodeValue());
}
我用的时候 XPathExpression expr = xpath.compile(&#34; // book [@ year = 2005] / *&#34;); 我得到了正确的输出数据。
但是当我使用时 xpath.compile(&#34; //书[@年= 2005ad ] / *&#34); 我没有得到任何输出数据。
每当&#34;年&#34;的任何字母数字数据时使用,我没有得到任何数据。 我很困惑为什么会出现这个问题。
答案 0 :(得分:0)
解决方法是这样做(带引号):
//book[@year="2005ad"]