使用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>
答案 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()
并获得两个节点。