gpt4 book ai didi

xml - xPath检索多个值

转载 作者:行者123 更新时间:2023-12-03 16:16:20 25 4
gpt4 key购买 nike

我有一个巨大的xml,需要定位要支付的金额和相应的billID。

我只是想出了如何选择正确的数量(距离CellText ='amount'的单元格相距2个单元格)。我可以打印出来,并且可以使用。

现在,我还需要打印相应的billID。我怎么做?

这是我使用的XML类型的示例:

<Section>
<Item>
<TableRow>
<Cell>
<RowNo>4</RowNo>
<CellColNo>1</CellColNo>
<CellText>amount</CellText>
<CellAttribute/>
</Cell>
<Cell>
<RowNo>4</RowNo>
<CellColNo>2</CellColNo>
<CellText/>
<CellAttribute/>
</Cell>
<Cell>
<RowNo>4</RowNo>
<CellColNo>3</CellColNo>
<CellText>138</CellText>
<CellAttribute/>
</Cell>
</TableRow>
</Item>
<Item>
<BillID>123456</BillID>
</Item>
</Section>
<Section>
...
</Section>


这是我的代码,我需要添加的地方还应该打印billID:

XPath xPath =  XPathFactory.newInstance().newXPath();
String exprString = "//TableRow/Cell[CellText='amount:']/following-sibling::cell[2]CellText/text()";
XPathExpression expr = xPath.compile(exprString);

Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int j = 0; j < nodes.getLength(); j++) {
System.out.println(nodes.item(j).getNodeValue());
}


(我知道XML是没有意义的,它只是为了说明格式。还有几个“部分”,所以我需要确保选择正确的一个!)。提前致谢!

最佳答案

如果您想同时获得两个String,则可以使用以下XPath表达式,相对于假设的|节点,应用节点统一运算符root

/root/Section/Item/TableRow/Cell/CellText[text()='amount']/parent::Cell/following-sibling::Cell[2]/CellText/text() | /root/Section/Item/BillID/text()


可以选中 here at XPathFiddle
这导致


138
123456

关于xml - xPath检索多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35710958/

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