Jag har denna XML datan: Sök i forumet på ordet "SelectSingleNode" och kolla ett inlägg där jag fick svar. Där bör du finna lösningen. Om man inte behöver bry sig om hur mycket data man plockar upp, dvs storleken på xml-filen, så kan man med fördel lyfta upp det hela i ett dataset.Blir inte klok (XML)
<code>
<AktivSkuld>
<Skuld0>
<antal>2</antal>
<belopp>181690</belopp>
</Skuld0>
<Skuld1>
<antal>1</antal>
<belopp>3456</belopp>
</Skuld1>
</AktivSkuld>
</code>
Och jag försöker såhär:
<code>
Dim oReader As XmlTextReader
If oReader.NodeType=XmlNodeType.Element then
If oReader.Name = "belopp" then
oreader.read()
CR_TEST = oreader.value
End If
End If
</code>
Fråga 1:
Detta fungerar bra men jag får bara ut det sista beloppet (3456). Hur gör jag för att välja node tex:
Skuld0 = "AktivSkuld/Skuld0/Belopp"
Skuld1 = "AktivSkuld/Skuld1/Belopp"
Fråga 2:
Hur gör jag för att räkna antalet skulder och lägga ihop dem?
Något i denna stilen?
<code>
If oreader.HasAttributes Then
Dim i As Integer
For i = 0 To reader.AttributeCount - 1
reader.MoveToAttribute(i)
Skulder = Skulder + Integer.Parse(reader.Value)
Next i
reader.MoveToElement()
</code>Sv: Blir inte klok (XML)
Sv: Blir inte klok (XML)
<code>
ds.ReadXML(xmlReader)
</code>
Då ligger allt data i datasettet och åtkomstfunktionerna som finns i ett dataset kan användas. Använder du dessutom typade dataset (se annan plats om detta) som jag i alla fall vet att vs.net kan fixa automagiskt så kan man skriva följande lilla kodsnutt.
<code>
dim ds as new skulderTyped
dim xmlRead as new xmlReader("c:\myxmldocs\skulder.xml")
ds.ReadXML(xmlreader)
dim skuld as double = ds.Skulder.FindByPersonID(personID).skuld
</code>
//Mikael Sand