在XML中搜索以character开头的属性

时间:2014-11-11 21:47:43

标签: xml xpath

我遇到了以下困境:采用这样的XML:

<book id="$bk102">
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
</book>

我需要收集以“$”开头的XML文档中的所有属性(并用我在内存中的一些数据替换它们)。其中最难的部分是带有“$”的属性可以在Document的任何Node上,而不仅仅是在示例中的id Element中。有没有可以制作技巧的魔法XPath表达式?
欢迎任何其他基于Java的解决方案。
提前致谢

2 个答案:

答案 0 :(得分:1)

尝试//*/@*[starts-with(.,"$")]

http://www.freeformatter.com/xpath-tester.html#ad-outputAttribute='id="$bk102"'提供了问题中XML示例的XPath匹配。

(请参阅https://stackoverflow.com/a/1390599/1712389https://stackoverflow.com/a/7405471/1712389

答案 1 :(得分:1)

XPath表达式就像

一样简单
//@*[starts-with(.,'$')]

返回值字符串以“$”开头的所有属性节点。

//                    anywhere in the document
@*                    an attribute with an arbitrary name
[                     but only if this attribute
starts-with(.,'$')]   has a value that starts with "$"