webForumDet fria alternativet

läsa xml

1 svar · 602 visningar · startad av DavidB

DavidBMedlem sedan jan. 20001 372 inlägg
#1

Hej

Det är så att jag försöker mig på att utläsa olika värden från en xml-fil men jag har fått ett litet problem.

Min Xml-fil ser ungefär ut enligt följande:

1.  <Objects>
2. 	<Domain name="name">
3.		<Patterns>
[b]4.			<Pattern name="LALALA">Yeah</Pattern>[/b]
5.			<Pattern name="ASD">Ett</Pattern>
6.		</Patterns>
7.	</Domain>
8.
9.	<Domain name="othername">
10.		<Patterns>
[b]11.			<Pattern name="LALALA">YeahYeah</Pattern>[/b]
12.			<Pattern name="ASD">Ett annat</Pattern>
13.		</Patterns>
14.	</Domain>
15. </Objects>

och koden för att plocka ut data ser ut såhär:

string text = "LALALA";
XmlNode domain = _doc.SelectSingleNode(string.Format("//Domain[@name='{0}']", "othername"));

XmlNode patterns =  domain.ChildNodes.Item(0);

text = text.ToUpper();
XmlNode xn = patterns.SelectSingleNode(string.Format("//Pattern[@name='{0}']", text));

När jag kör ovanstående kod får jag ut Noden på rad 4 fast jag egentligen vill ha ut den som finns på rad 11, vad jag förstår det som så får SelectSingleNode fram den första Noden som matchar mitt mönster i hela xmlfilen även om jag bara vill att den skall kolla igenom ChildNodes till Noden 'domain'. Hur gör jag för att få ut Noden på rad 11?

emissionMedlem sedan dec. 19996 721 inlägg
#2

När du anger "//" i din xpath så säger du egentligen "Leta precis var som helst".

Fråga i stället så här:

XmlNode xn = _doc.SelectSingleNode(string.Format("//Domain[@name='{0}']/Patterns/Pattern[@name='{1}']", "othername",text));
127 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)