java - 使用 XPath 查询 XML 时始终为空

标签 java xml xpath

我正在使用以下代码通过从流中获取的 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

关于java - 使用 XPath 查询 XML 时始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/651265/

相关文章:

xml - Googles IMPORTXML 返回 "Imported content is empty"错误

java - 自定义 Java JTree 实现

java - 扫描仪跳过循环中第一个输入的输入

java - 将 JAXB 注释类用于 JAXWS 服务

xml - xslt中如何获取同一节点下的最大值

c++ - libxml2 xpath 解析,无法按预期工作

java - 我如何告诉 Selenium 在打印弹出窗口上按取消?

java - RestTemplate 调用,其中函数的参数是 MultipartHttpServletRequest 请求

html - 如何在 git 功能分支工作流中处理 xml/html?

java - XPATH:排除具有特定子元素的元素