我有一个重复出现的 XML 元素
<comment>
<cmnt_reas_typ>reason1</cmnt_reas_typ>
<cmnt_txt>ABC</cmnt_txt>
</comment>
<comment>
<cmnt_reas_typ>reason1</cmnt_reas_typ>
<cmnt_txt>ABC</cmnt_txt>
</comment>
<comment>
<cmnt_reas_typ>reason2</cmnt_reas_typ>
<cmnt_txt>ABC</cmnt_txt>
</comment>
基本上,对于特定的 cmnt_reas_typ
,我只想显示一次 cmnt_txt
。所以在上面的例子中,我只想为 cmnt_reas_typ
= "reason1"显示一次 cmnt_txt
"ABC"。但问题是 cmnt_reas_typ
是一个动态值,我不能在 XPath 中对其进行硬编码。有没有一种说法是只为这个 cmnt_reas_typ
返回一个 cmnt_txt
?或者即使 XPath 返回 bool 值 true
如果它是第二次出现 cmnt_reas_typ
也应该没问题。它适用于 XPATH 1.0。
最佳答案
如果我对您的需求理解正确,您希望每种评论类型都生成一个评论文本(第一个),对吗?如果是这样的话,那么我想出了这个 XPath:
//cmnt_txt[not(../cmnt_reas_typ/text() = ../preceding::cmnt_reas_typ/text())]
它采用所有 cmnt_text
节点,其 cmnt_reas_typ
不等于任何前面的 cmnt_reas_typ
。因此,如果没有遗漏任何内容,它应该只采用每种类型的第一个 cmnt_text
。
关于xml - 如果存在重新出现的元素,则 XPATH 选择不同的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13382937/