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

我尝试了几种方法,但都不起作用,我该怎么做?

C#XML文件中的标记路径列表

您可以将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)