Tänkte bara fråga hur andra gör när ni skall läsa data från en xml sekvens. Sekvens kan ha ett syfte, men behöver inte ha det.Läsa sekvenser
Det jag menar är att man har ett schema med en sekvens med t.ex. kundinformation
<Customer>
<CustNo>123</CustNo>
<CustName>Martin</CustName>
...
</Customer>
Vissa fält är obligatoriska och andra är valfria.
(XML data är inläst och finns i DOM struktur)
Som jag ser det finns det två sätt att läsa data.
1. Använda XPATH och hämta de fält man behöver i valfri ordning.
Nåt i stil med
CustNo = node.selectsinglenode("CustNo").text
CustName = node.selectsinglenode("CustName").text
...
2. Använda sekvensens inneboende ordning
CustNo = node.text 'måste komma först
node = node.next
if node.nodeName = "CustName then ' CustName är valfritt
CustName = node.text
node = node.next
end if
...
Jag tycker XPATH sättet är "snyggast" och mest flexibelt för ändringar men det känns ändå fel på något sätt att inte använda sekvensens inneboende struktur. Det finns väl ett syfte med att sekvenser måste komma i en viss ordning.Sv: Läsa sekvenser
Detta är ju det fina med XML, du bestämmer själv hur du vill representera din information.
Om du vet sekensen så går det ju snabbare att läsa in.
Istället för att leta efter "CustName" kan du navigera dit
med .firstChild, .nextSibling osv. Men om du har valfria fält måste du ju ändå testa hela tiden och då kan du lika gärna köra xpath.
Eller, läs in till ett typat Dataset..
MyDs.ReadXML()
MyDS.Tables(0).Item(0).CustName
Bäst prestanda får du med XmlTextReader.
Lite mer att koda men grymt snabbt. Intressant om du har stora filer.