[XML/VB.NET] Selecteer singlenode met parameters

Pagina: 1
Acties:

  • sjaakie
  • Registratie: Oktober 2000
  • Niet online

sjaakie

Developer

Topicstarter
Ik wil uit een soortgelijk xml bestand als dit:

code:
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8" ?>
<data>
<paklijst id="1" name="Op vakantie">
<item checked="true">Tandenborstel</item>
<item checked="false">Tandpasta</item>
</paklijst>
</data>


Vervolgens heb ik een functie die de attribute "checked" moet gaan wijzigen, maar hij moet dus eerst die node opzoeken voordat hij de attribute kan wijzigen. Ik had nu zoiets als dit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Function UpdatePaklijstAttrib(ByVal paklijst As String, ByVal item As String, ByVal attrib As String, ByVal value As String)
        Try
            'Declareer xml-file
            Dim XmlUserDocument As New XmlDocument

            'Laad xmlfile
            XmlUserDocument.Load("paklijst.xml")

           Dim root As XmlElement = XmlUserDocument.DocumentElement

            'Declareer de node en vul met nodegegevens
            Dim node As XmlNode = root.SelectSingleNode("/data/paklijst [@id='" & paklijst & "'] and [item=" & item & "]")

            node.Attributes("attrib").Value = value

            'XmlUserDocument.Save("paklijst.xml")
        Catch ex As Exception
            msgbox(ex.Message)
        End Try
    End Function


Maar dit werkt dus niet, hoe pak ik nou die enkele node (die in principe altijd uniek is) met de innertext $item?

[ Voor 25% gewijzigd door sjaakie op 08-12-2004 16:16 ]

Als je enige gereedschap een hamer is, ziet elk probleem eruit als een spijker...


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:34
Waarom selecteer je niet de paklijst node met het gegeven id, en ga je dan met een XPahtNodeIterator je set gaan overlopen en kijken of de 'huidige' node, de node is die je wilt?

code:
1
2
3
4
XPathNavigator nav = xmlUserDocument.CreateNavigator();
XPathNodeIterator iter = nav.Select ("/data/paklijst/[@id='1"]");

// Loop hier over iter, en kijk of de huidige node de node is die je wil

https://fgheysels.github.io/


  • sjaakie
  • Registratie: Oktober 2000
  • Niet online

sjaakie

Developer

Topicstarter
Ook wel een id, ik ga is effe proberen...

Als je enige gereedschap een hamer is, ziet elk probleem eruit als een spijker...


  • TlighT
  • Registratie: Mei 2000
  • Laatst online: 22-03 10:40
Dit is volgens mij de xpath die een specifiek item selecteert.
code:
1
/data/paklijst[@id=1]/item[text()='Tandenborstel']