webForumDet fria alternativet

Hitta attribut...

XML

5 svar · 411 visningar · startad av fredrik

Medlem sedan dec. 19991 072 inlägg
Frågan#1

Jag behöver söka igenom ett xml-dok. efter ett visst attribut värde, ex:

<item id="1">
<child1>asdf</child1>
<child2>ölkj</child2>
</item>
<item id="2">
<child1>popoi</child1>
<child2>werew</child2>
</item>

Jag vill här hämta ut det som står i "child1" där id="2" i "item".

Hur är bästa sätt att göra det? Jag använder MSXML2 för att parsa dokumentet.

Just nu loopar jag igenom alla "item" och kollar vad "id" har för värde, men finns det nåt smidigare sätt?

Medlem sedan juni 20001 257 inlägg
#2

Är det inte det här du letar efter? http://www.webforum.nu/showthread.php?s=&threadid=47607

Medlem sedan dec. 19991 072 inlägg
#3

Jo, exakt, jag hittade det på https://www.w3schools.com fast jag skriver lite annorlunda...

Dim strIDXPath As String = "item/[@id='2']"

fast...det kanske bara är VB -syntax ist!

Tack ändå!

Medlem sedan dec. 19991 072 inlägg
#4

...fast nu när jag testar lite så märker jag att vad jag än skriver så tar den alltid första noden...

..fast i efterhand:
löste det själv...var fel-tänkt av mig....

Medlem sedan juni 20001 257 inlägg
#5

Aha, du använde XPath. Jag använde den andra metoden. Kan du posta din lösning?

Medlem sedan dec. 19991 072 inlägg
#6

Japp, mitt xml-dok, ser ut så här:
<?xml version="1.0" standalone="yes"?>
<translation>
<item id="1">
<en>Photoalbum</en>
<se>Fotoalbum</se>
<no>Photoalbum</no>
<fi>Photoalbum</fi>
</item>
<item id="2">
<en>Files</en>
<se>Filer</se>
<no>Files</no>
<fi>Files</fi>
</item>
</translation>

Vill jag nu hämta ut "en" (engelska) där id är 1 skriver jag som XPath:
"/translation/item[@id='1']/en"
(skapas dynamiskt i koden)

Jag använder:
xmlDoc.SelectSingleNode(strIDXPath).InnerXml

För att hämta ut värdet för denna nod. ("Photoalbum" i detta fallet).

253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)