在xpath3中获取多个属性



当价格簿的货币为"GBP"时,我必须按名称"product-id"获取所有属性。使用xpath时,此表达式运行良好。但是当我使用xpath3时,它只返回第一个匹配的值,而不是所有的值。我所需要的只是xpath3 中xpath的等价表达式

工作xpath表达式

#[xpath:/pricebooks/pricebook[./header/ccurrency="GBP"]/pricetables/pricetable/@product-id]

我尝试过的xpath表达式:

#[xpath3('/pricebooks/pricebook[./header/ccurrency="GBP"]/pricetables/pricetable/@product-id',payload,'STRING')]

预期:[产品1、产品2、产品4]

实际:product1

输入XML:

<pricebooks>
 <pricebook>
    <header pricebook-id="GB">
        <currency>GBP</currency>
        <display-name>name1</display-name>
    </header>
    <price-tables>
        <price-table product-id="product1">
            <amount quantity="1">24.0</amount>
        </price-table>
    </price-tables>
 </pricebook>
 <pricebook>
    <header pricebook-id="NZ">
        <currency>GBP</currency>
        <display-name>name2</display-name>
    </header>
    <price-tables>
        <price-table product-id="product2">
            <amount quantity="1">38.00003</amount>
        </price-table>
    </price-tables>
 </pricebook>
 <pricebook>
    <header pricebook-id="US">
        <currency>USD</currency>
        <display-name>name3</display-name>
    </header>
    <price-tables>
        <price-table product-id="A215ZZ003">
            <amount quantity="1">28.0</amount>
        </price-table>
    </price-tables>
 </pricebook>
 <pricebook>
    <header pricebook-id="AU">
        <currency>GBP</currency>
        <display-name>name4</display-name>
    </header>
    <price-tables>
        <price-table product-id="product4">
            <amount quantity="1">30.0</amount>
        </price-table>
    </price-tables>
  </pricebook>
</pricebooks>

您尝试使用xpath3()时的第三个参数似乎是错误的。请尝试使用NODESET而不是STRING,因为您的意思是返回多个节点。

引用自文件:

  • BOOLEAN:返回表达式的有效布尔值作为java.lang.String。等效于在XPath boolean()函数的调用中包装表达式。

  • STRING:返回转换为字符串的表达式的结果,作为java.lang.String。等效于在对XPath string()函数的调用中包装表达式。

  • NUMBER:返回转换为双精度java.lang.Double的表达式的结果。相当于在XPath number()函数的调用中包装表达式。

  • NODE:以节点对象的形式返回结果。

  • NODESET:返回一个DOM NodeList对象。

也许这有帮助,

/pricebooks/pricebook/price-tables/price-table[contains(@product-id,'product')]/@product-id-

相关内容

  • 没有找到相关文章

最新更新