使用位于最后一个逗号后面的Xpath返回文本

时间:2013-11-20 14:31:49

标签: xpath

使用xpath,我想返回值000078&从下面的xml 000077。 “实体”标签的文本可以是2个逗号分隔值或3个或更多。我总是想要最后一个值。

<Parent ID="123">
    <SubParent ID="1">
        <Name>Modem</Name>
        <Entity>000006,000069,000078</Entity>
    </SubParent>
    <SubParent ID="2">  
        <Name>Modem</Name>
        <Entity>000006,000077</Entity>
    </SubParent>
</Parent>

1 个答案:

答案 0 :(得分:0)

XPath是一种选择语言,而不是字符串处理(或通用编程)语言,您只能从文档中的不同节点中进行选择。

包含您要查找的值的节点是两个文本节点'000006,000069,000078''000006,000077',因此//Entity/text()(或//Entity)是您可以获得的最接近的节点单独使用XPath。

任何进一步的字符串处理,例如在最后一个逗号后拉出子字符串,必须以宿主语言完成。


这是一个示例,表明在XML中存储包含多个数据点(如逗号分隔值)的不透明字符串是一个坏主意。

这就是您的XML 应该的样子。

<Parent ID="123">
   <SubParent ID="1">
            <Name>Modem</Name>
            <Entity>000006</Entity>
            <Entity>000069</Entity>
            <Entity>000078</Entity>
   </SubParent>
   <SubParent ID="2">  
            <Name>Modem</Name>
            <Entity>000006</Entity>
            <Entity>000077</Entity>
   </SubParent>
</Parent>

因为现在您可以轻松选择//Entity[last()]/text()并获得两个节点。