У меня есть такой XML
<table>
<header>
<c0 type="string">name</c0>
<c1 type="ip_address">last_ip_address</c1>
</header>
<body>
<r>
<c0>CHDB207</c0>
<c1>172.18.151.57</c1>
<c2>Locarno</c2>
</r>
<r>
<c0>CHDB100</c0>
<c1>172.18.151.58</c1>
<c2>Milan</c2>
</r>
</body>
Я хочу просмотреть все r элементов и получить результат, подобный
- c0 chdb207 chdb207
- c1 chdb207 172.18.151.57
- c2 chfb207 Локарно
- c0 chdb100 chdb100
- c1 chdb100 172.18.151.58
- c2 chdb100 Милан
Таким образом, для каждого цикла c0 следует повторно использовать в наборе результатов.
У меня есть следующий код в vb.net
Dim root2 As XmlElement = document.DocumentElement
Dim nodeList As XmlNodeList = document.SelectNodes("table/body/r/*")
For Each elem As XmlNode In nodeList
MsgBox(elem.Name & " " & headerList(0).InnerXml & " " & elem.InnerXml)
Next
Моя проблема заключается в том, как выйти из цикла, когда все c-элементы узла повторяются, чтобы headerList (0) можно было записать как переменную, а не как статическую.
На данный момент мой результат выглядит так:
- c0 chdb207 chdb207
- c1 chdb207 172.18.151.57
- c2 chfb207 Локарно
- c0 chdb207 chdb100
- c1 chdb207 172.18.151.58
- c2 chdb207 Милан
В качестве альтернативы я мог бы использовать вышеприведенную стетику, если бы мог перебирать каждую секцию узла.
Число c-elemts не фиксировано, равно как и количество узловых узлов.
Редактировать
В конечном итоге я хочу записать содержимое XML в базу данных. База данных исправлена и содержит 4 столбца:
- ключ> содержит значение C
- hostname> содержит значение элемента c0 каждого блока
- datavalue> содержит значение элемента c в его ключевой позиции
- runkey> статическое значение, считанное из переменной
Результат будет выглядеть так:
* c0 hostname hostname 200
* c1 имя хоста ip 200
* имя хоста c2 независимо от 200
Любая помощь приветствуется!
Дан