我遇到了以下困境:采用这样的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的解决方案。
提前致谢
答案 0 :(得分:1)
尝试//*/@*[starts-with(.,"$")]
http://www.freeformatter.com/xpath-tester.html#ad-output为Attribute='id="$bk102"'
提供了问题中XML示例的XPath匹配。
(请参阅https://stackoverflow.com/a/1390599/1712389和https://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 "$"