C#XML文件中的标记路径列表
本文关键字:路径 列表 文件 C#XML | 更新日期: 2023-09-27 17:57:48
我想从一个xml文件中获取所有元素XPaths,例如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
我尝试了几种方法,但都不起作用,我该怎么做?
您可以将xml加载到XmlDocument中,并遍历树,直到找到一个没有子节点的节点,并在执行和重复时构建字符串。
快速谷歌为您找到了一个例子,并在stackoverflow 上找到了这个例子
我的方法的伪代码:
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)