【问题标题】:using xpath in Java [duplicate]在Java中使用xpath [重复]
【发布时间】:2018-02-18 17:05:57
【问题描述】:

我是 xpath 的 Java 初学者。我想获取所有包含特定文本的节点,所以我尝试了:

keyword = "employee//[contains(text()," + inputText + ")]";

NodeList nodes = (NodeList) xpath.evaluate(keyword, doc, XPathConstants.NODESET);

然后结果是所有员工元素,即使他们没有特定的文本!

请帮助我如何获取包含文本的员工元素?

谢谢,

【问题讨论】:

  • 您的输入是什么,您当前使用上述代码从输入中得到的输出是什么?
  • 您的 XPath 格式错误,或者您在问题中输入错误。您没有包含正在查询的 XML。您的问题可能因缺少minimal reproducible example 而被关闭,但潜在问题可能会通过重复链接中的答案得到解决。如果没有,请改进此问题并要求重新打开它。谢谢。

标签: java xml xpath


【解决方案1】:

您好,我尝试查找所有名为 Guido 的员工。代码如下。它对我有用。

    String name="Guido";
    FileInputStream fileIS = new FileInputStream("C:/Users/Maxi/workspace/ProyectoIteraciones/src/com/proyecto/init/Employees.xml");
    DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = builderFactory.newDocumentBuilder();
    Document xmlDocument = builder.parse(fileIS);
    XPath xPath = XPathFactory.newInstance().newXPath();        
    String expression = "//Employee/Name[contains(.,'"+name+"')]";      
    NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);
    System.out.println("El resultado es "+nodeList.item(0).getTextContent());

【讨论】:

  • 它有效,谢谢。
猜你喜欢
  • 2010-09-25
  • 2011-07-30
  • 2012-10-15
  • 2013-08-14
  • 2018-05-17
  • 2019-06-29
  • 1970-01-01
  • 2020-04-22
  • 2017-01-10
相关资源
最近更新 更多