我有一些XML,我在使用XPath处理时遇到问题。我似乎无法获得我正在寻找的价值观。 XML的结构如下:
<Group>
<Menu>
<Name>Top Menu</Name>
<Document>
<DocName>Readme.txt</DocName>
</Document>
<Menu>
<Name>Sub Menu</Name>
<Document>
<DocName>Manual.pdf</DocName>
</Document>
<Document>
<DocName>UserGuide.pdf</DocName>
</Document>
</Menu>
</Menu>
</Group>
根据菜单名称,我想在菜单中找回DocumentNodes列表。例如,给定“子菜单”,我想取回Manual.pdf和UserGuide.pdf的两个Document节点。
目前,我正在使用遍历孩子的代码来提取这些信息,但是,我宁愿直接使用XPath来提取它,但我的技能很差。
(在你问之前,我无法重构XML。这是以这种方式提供给我的。)
有什么想法吗?
答案 0 :(得分:9)
这是一个可以做你想做的XPath:
//Menu[Name='Sub Menu']/Document
答案 1 :(得分:0)
/<Menu>[\w\n]*<Name>Sub Menu</Name>[\w\n]*<Document>[\w\n]*(<DocName>([a-ZA-Z0-9\.]+)</DocName>[\w\n]*)*</Menu>/
更有可能工作(稍微调整一下,这有点粗糙!),但是,我不认为正则表达式是可行的。我个人使用XPath或DOM