我想从xml文件中获取所有元素XPath,例如xml文件是, 类似于使用Excel打开XML文件时
<BookStore>
<BookStoreInfo>
<Address />
<Tel />
<Fax />
<BookStoreInfo>
<Book id="123" category="Science Fiction">
<BookName />
<ISBN />
<PublishDate />
</Book>
<Book>
....
</Book>
</BookStore>
我想得到
BookStore/BookStoreInfo/Address
BookStore/BookStoreInfo/Tel
BookStore/BookStoreInfo/Fax
BookStore/Book/@id
BookStore/Book/@category
BookStore/Book/BookName
BookStore/Book/ISBN
BookStore/Book/PublishDate
我尝试了几种方法,但是不起作用,我怎么能这样做?
答案 0 :(得分:0)
您可以将xml加载到XmlDocument并遍历树,直到您点击一个没有子节点的节点,然后重复。
快速谷歌找到你的例子,并在stackoverflow
上找到了这个答案 1 :(得分:0)
我的方法的伪代码:
calculateXPaths(curNode, stringSet, curString) {
// This ensures only terminal nodes are counted. Remove to get all paths
if (!curNode.hasChildren) {
stringSet.add(curString)
}
foreach (attr on curNode) {
stringSet.add(curString + "/@" + attr.name)
}
foreach (childNode on curNode) {
curString = curString + "/" + childNode.name
calculateXPaths(childNode, stringSet, curString)
}
}
您可以通过调用
开始整个过程calculateXPaths(xmlDocument.rootNode, new Set(), xmlDocument.rootNode.name)