如何在XPath中选择具有一个属性的特定值和另一个属性的最大值的节点?

时间:2015-04-15 07:49:20

标签: xml xpath xpath-1.0

例如,我有一个XML:

    <?xml version="1.0"?>
<list>
    <pos matnr="10017571" charg="1045825700" atwrt="108" labst="610" />
    <pos matnr="10017572" charg="1045825700" atwrt="108" labst="600" />
    <pos matnr="10017573" charg="1046186400" atwrt="108" labst="2730" />
    <pos matnr="10017573" charg="1046117000" atwrt="108" labst="5200" />
    <pos matnr="10017573" charg="1046055000" atwrt="108" labst="3507" />
    <pos matnr="10017574" charg="1045911400" atwrt="108" labst="50" />
    <pos matnr="10017574" charg="1046055000" atwrt="108" labst="14230" />
    <pos matnr="10017574" charg="1046117000" atwrt="108" labst="5500" />
    <pos matnr="10017574" charg="1046186400" atwrt="108" labst="2410" />
</list>

那么,如何在XPath中选择具有一个属性的特定值和另一个属性的最大值的节点?我需要这样的东西(不行):

xmlDocZ.selectSingleNode("//pos[@matnr='10017574' and @labst[not(.>//@labst)]]");

结果必须是:

<pos matnr="10017574" charg="1046055000" atwrt="108" labst="14230" />

1 个答案:

答案 0 :(得分:0)

哦,我是靠自己得到的。这很好用:

xmlDocZ.selectSingleNode("//pos[@matnr='10017574' and @labst[not(.//pos[@matnr='10017574']/@labst)]]");