【问题标题】:XPath for text of node?节点文本的 XPath?
【发布时间】:2016-08-15 18:55:23
【问题描述】:

我正在尝试获取比较器具有 VALUE = item.auxiliaryData.productRef.brandName 的 STRING-VALUE 的内容

我尝试使用以下代码,

XPathExpression expr = xpath.compile
                ("//comparator[contains(VALUE,'item.auxiliaryData.productRef.ancestorCategoryIds')]//STRING-VALUE");
        productRefs = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);

这就是我要解析的内容

                    <comparator NAME="equals">
                       <VALUE>item.auxiliaryData.productRef.brandName</VALUE>
                       <CONSTANT>
                          <DATA-TYPE>java.lang.STRING</DATA-TYPE>
                          <STRING-VALUE>Ariat</STRING-VALUE>
                       </CONSTANT>
                    </comparator>
                    <comparator NAME="equals">
                       <VALUE>item.auxiliaryData.productRef.ID</VALUE>
                       <CONSTANT>
                          <DATA-TYPE>java.util.Collection</DATA-TYPE>
                          <STRING-VALUE>84332</STRING-VALUE>
                          <STRING-VALUE>79904</STRING-VALUE>
                          <STRING-VALUE>82203</STRING-VALUE>
                       </CONSTANT>
                    </comparator>

【问题讨论】:

  • 好的。你得到了什么?
  • 您正在使用contains(X, Y),您可能打算使用X=Y。这是一个常见的错误:人们认为“节点包含价值”。但是contains() 测试子字符串,并且更昂贵:contains(&lt;A&gt;foxy&lt;/A&gt;, 'xy') 是真的。但是,我怀疑这是您的问题的原因。

标签: java xml xpath xpath-2.0 domxpath


【解决方案1】:

这个 XPath,

string(//comparator[VALUE='item.auxiliaryData.productRef.brandName']//STRING-VALUE)

将按要求直接返回"Ariat"

【讨论】:

    【解决方案2】:

    您的 xpath 需要更正:

    //comparator[contains(VALUE,'item.auxiliaryData.productRef.brandName')]//STRING-VALUE

    你使用的是item.auxiliaryData.productRef.ancestorCategoryIds

    【讨论】:

      猜你喜欢
      • 2019-04-23
      • 2011-06-29
      • 2017-09-01
      • 2019-04-11
      • 1970-01-01
      • 2018-03-15
      • 2014-10-10
      • 1970-01-01
      • 2020-01-03
      相关资源
      最近更新 更多