gpt4 book ai didi

java - java中基于条件的xpath

转载 作者:行者123 更新时间:2023-12-01 15:19:02 24 4
gpt4 key购买 nike

我有一个以下结构的 xml:

<Root>
<Sample>
<Materil material_class="book" />
<Book Name="harry" Price="8" />
<Book Name="small things" Price="9" />
<Book Name="snow" Price="10" />
</Sample>
<Commodity>
<Sample>
<Materil material_class="sub" />
<Book Name="sherin" Price="8" />
<Book Name="bigthings" Price="9" />
<Book Name="leopard" Price="10" />
</Sample>
<Commodity>
<Sample>
<Materil material_class="sub" />
<Book Name="azxcv" Price="86" />
<Book Name="ddddd" Price="79" />
<Book Name="qwert" Price="810" />
</Sample>
</Commodity>
<Commodity>
<Sample>
<Materil material_class="subtwo" />
<Book Name="ratnam" Price="86" />
<Book Name="shantharam" Price="99" />
<Book Name="da vinci" Price="10" />
</Sample>
</Commodity>
</Commodity>
</Root>

有没有办法根据条件迭代此 xml,例如,如果 material_class = "sub",则迭代其下面的 Book 标签并存储 @Name@Price 。如果 material_class = "book",则迭代其下面的 Book 标记。另外我想获取 /Root/Commodity/Commodity 标签数量的长度(在本例中为两个)。任何帮助表示赞赏。我是 XPath 新手。

最佳答案

获取 @material_class='sub'@material_class='book' 的图书 @Name@Price ,使用此 XPATH

/Root[descendant-or-self::Sample or Sample[descendant-or-self::*]]//*[Materil[@material_class='sub' or @material_class='book']]/Book

//Sample[Materil[@material_class='book' or @material_class='sub']]/Book

加载此 XPATH 后,要打印名称,请使用 @Name ,要打印价格,请使用 @Price

要获取/Root/Commodity/Commodity标签数量的长度,XPATH为

/Root/Commodity/Commodity

//Commodity/Commodity

JAVA:

NodeList node = (NodeList) xpath.evaluate("/Root/Commodity/Commodity", xml, XPathConstants.NODESET);
count = node.getLength(); // OUTPUTS: 2

供您引用,实际上通过 XSLT 呈现 XML 的性能要好得多,而且更容易实现。

关于java - java中基于条件的xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11232087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com