C # Список путей тегов в файле XML - PullRequest
1 голос
/ 26 мая 2011

Я хотел бы получить все элементы XPath из файла xml, например, файл xml, что-то вроде открытия XML-файла в Excel

<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

Я пробовал несколько способов, но не работает, как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 26 мая 2011

псевдокод моего подхода:

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)
0 голосов
/ 26 мая 2011

Вы можете загрузить xml в XmlDocument и перемещаться по дереву, пока не дойдете до узла без дочерних элементов, создающих строку при повторении.

Сделал быстрый Google, чтобы найти вам пример и нашел это прямо здесь, на stackoverflow

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...