我使用以下代码来查询我从流中获取的XPath的一些XML.
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); domFactory.setNamespaceAware(false); DocumentBuilder builder = domFactory.newDocumentBuilder(); Document doc = builder.parse(inputStream); inputStream.close(); XPathFactory factory = XPathFactory.newInstance(); XPath xpath = factory.newXPath(); XPathExpression expr = xpath.compile("//FOO_ELEMENT"); 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());
我已经通过将内容转换为字符串检查了内容流 - 而且它就在那里 - 所以它不像流中没有数据.
这只是让我烦恼 - 因为我已经尝试了各种不同的代码,我仍然在"System.out.println"行打印'null' - 我在这里缺少什么?
注意:我想在元素中看到文本.
除了Brabster建议的内容之外,您可能还想尝试一下
System.out.println(nodes.item(i).getTextContent());
要么
System.out.println(nodes.item(i).getNodeName());
取决于您打算显示的内容.
见http://java.sun.com/javase/6/docs/api/org/w3c/dom/Node.html