Announcement

Collapse
No announcement yet.

XML Knoten löschen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML Knoten löschen

    Hallo zusammen,
    ich möchte einen XML-Knoten per VB.Net löschen. Ich habe dieses Problem auch schon hier im VB-Forum gepostet. Dort konnte man mir nicht helfen und riet mir es hier nochmals zu versuchen....

    Also,
    ich habe folgenden Aufbau in einem XML-File:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <MapDrives>
      <ADUser>
        <User>Ich</User>
        <PWD>JPzW7rV7kmTyIDl4NBgocL3hRxGZfB/i7rDB1k4qEGA=</PWD>
      </ADUser>
      <MapDrive>
        <Drive>r</Drive>
        <UNCPath>\\MeinLW1</UNCPath>
        <Persistent>False</Persistent>
      </MapDrive>
      <MapDrive>
        <Drive>x</Drive>
        <UNCPath>\\MeinLW2</UNCPath>
        <Persistent>False</Persistent>
      </MapDrive>
      <MapDrive>
        <Drive>y</Drive>
        <UNCPath>\\MeinLW3</UNCPath>
        <Persistent>False</Persistent>
      </MapDrive>
    </MapDrives>
    Ich möchte z.B. aus diesem XML-File den Knoten
    Code:
    <MapDrive>
        <Drive>x</Drive>
        <UNCPath>\\MeinLW2</UNCPath>
        <Persistent>False</Persistent>
      </MapDrive>
    löschen..

    Wenn ich nach einem Atrribut suche funktioniert folgender Code:
    [highlight=vbnet]
    Dim XMLNode As Xml.XmlNode = XMLRoot.SelectSingleNode(strNodeDrive & "['Drive='" & Drive.Drive & "']") XMLRoot.RemoveChild(XMLNode)
    XMLRoot.RemoveChild(XMLNode)
    [/highlight]

    Ich möchte aber nun mit mindestens 2 Übereinstimmungen der Attributwerte vergleichen, da habe ich folgenden Code:
    [highlight=vbnet]
    Dim XMLNode As Xml.XmlNode = XMLRoot.SelectSingleNode(strNodeDrive & "['Drive='" & Drive.Drive & "' and UNCPath='" & Drive.UNCPath & "']")[/highlight]
    Hier bekomme ich aber eine Fehlermeldung:
    ...ist ein ungültiger Token.

    Hat jemand eine Idee, wie die Syntax aussehen müsste...??

  • #2
    Poste mal mehr Kontext, so dass man den Fehler reproduzieren kann, also die Deklaration und Zuweisung an die Variablen, die benutzt werden, so dass man genau sehen kann, wie das Argument zu SelectSingleNode aussieht, wenn der Fehler auftritt.
    Und poste die vollständige Fehlermeldung, vermutlich besteht diese doch aus mehr als "ist ein ungültiger Token".

    Comment


    • #3
      Hallo Martin,
      den kompletten Quelltext habe ich wie gesagt im VB.Net Forum schon mal gepostet. Hier der Link:
      http://entwickler-forum.de/showthread.php?t=66182
      Ich hoffe das ist OK...

      In der Fehlerzeile würde dann als Klartext folgendes drin stehn:

      Code:
      Dim XMLNode As Xml.XmlNode = XMLRoot.SelectSingleNode("MapDrive['Drive='x'] and ['UNCPath='MeinLW2']")
      Die Fehlermeldung lautet vollständig:
      "MapDrive['Drive='x'] and ['UNCPath='MeinLW2']" ist ein ungültiger Token.

      Ich hoffe du hast jetzt alle Infos, die du benötigst...
      ...falls noch was fehlt, bitte melden...


      Schon mal danke für deine Bemühungen

      Comment


      • #4
        Die korrekte XPath-Syntax ist
        Code:
        MapDrive[Drive = 'x' and UNCPath = 'MeinLW2']
        Mit SelectSingleNode dann etwa
        Code:
        XMLRoot.SelectSingleNode(String.Format("{0}[Drive = '{1}' and UNCPath = '{2}']", strNodeDrive, Drive.Drive, Drive.UNCPath))

        Comment


        • #5
          Super. Danke, das hat funktioniert....

          Comment

          Working...
          X