xml doorlopen

Status
Niet open voor verdere reacties.

Magican

Gebruiker
Lid geworden
12 aug 2008
Berichten
13
Hallo,

Ik heb een xml bestand dat er als volgt uitziet!
[XML] <?xml version="1.0" encoding="UTF-8" ?>
- <privadata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PrivaWriteSchema.xsd">
+ <project>
<name>Testproj</name>
<controller>1</controller>
<version>1.0</version>
<creationdate>2012-08-27</creationdate>
</project>
- <group>
<name>Groep</name>
- <element>
<name>Element</name>
- <item>
<name>verwachte buitentemp 16</name>
<rawvalue>192</rawvalue>
<unit>°C</unit>
<write>1</write>
</item>
- <item>
<name>verwachte buitentemp 32</name>
<rawvalue>0</rawvalue>
<unit>°C</unit>
<write>1</write>
</item>
</element>
</group>
</privadata>
- <!-- Page created in 19 ms
-->
- <!-- Size: 619bytes Max.Size:30720 bytes
--> [/XML]

Ik doorzoek het xml bestand doormiddel van:
Code:
            XmlDocument xd = new XmlDocument();
            xd.Load(URI);
            string xPath = "/privadata/group/element/item/rawvalue";

            MessageBox.Show(xd.SelectSingleNode(xPath).InnerText.ToString());

Maar ik wil juist rawvalue van "verwachte buitentemp 32" dus het volgende "item" zoals mijn code nu draait stopt die al bij "verwachte buitentemp 16".

Hoop dat iemand me kan helpen!

met vriendelijke groet,
 
Misschien zoiets, aan jou de taak om te controleren of de node de juiste is. (niet getest)

In dit voorbeeld zal hij itemNodes verzamelen (2 in dit geval) en dan kun je er mee doen wat je wilt (hier laat hij een messagebox tussendoor zien) . Als je zelf invloed hebt op het XML bestand misschien handig om de items een ID attribute te geven om eenvoudig te controleren welke je moet hebben.
Code:
var itemNodes = xmlDocument.SelectNodes("privadata/group/element/item");

if (itemNodes != null)
{
	foreach (XmlNode currentNode in itemNodes)
	{
			var nameNode = currentNode.SelectSingleNode("name");
			string nameValue = nameNode != null ? nameNode.InnerText : "";
			
			var rawNode = currentNode.SelectSingleNode("rawvalue");
			string rawValue = rawNode != null ? rawNode.InnerText : "";
			
			MessageBox.Show(nameValue + " " + rawValue);
	}
}
 
Ja zo'n soort loop zocht ik ! Heb het opgelost! bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan