vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ASP.NET, WebServices u. Remoting
XML/ InsertAfter bzw. xd.InsertBefore 
Autor: Brogi
Datum: 22.05.06 09:36

Hallo,

ich verwende ein XML-Dokument als Datenquelle für eine Sitemap (Treeview-Steuerelement). Zur Verwaltung dieses XML-Dokument möchte ich gerne eine Funktion schreiben, die einen XML-Knoten "nach oben" bzw. "nach unten" verschiebt.
 Private Sub upnode(ByVal id As String)
        Dim xd As New System.Xml.XmlDocument
        Dim xmlDoc As String
 
        If ID.StartsWith("a0") = True Then
            xmlDoc = Server.MapPath("\navigation\buch1.xml")
        ElseIf ID.StartsWith("a1") = True Then
            xmlDoc = Server.MapPath("\navigation\buch2.xml")
        ElseIf ID.StartsWith("a2") = True Then
            xmlDoc = Server.MapPath("\navigation\buch3.xml")
        ElseIf ID.StartsWith("a3") = True Then
            xmlDoc = Server.MapPath("\navigation\buch4.xml")
        ElseIf ID.StartsWith("a4") = True Then
            xmlDoc = Server.MapPath("\navigation\buch5.xml")
        ElseIf ID.StartsWith("a5") = True Then
            xmlDoc = Server.MapPath("\navigation\buch6.xml")
        ElseIf ID.StartsWith("a6") = True Then
            xmlDoc = Server.MapPath("\navigation\buch7.xml")
        ElseIf ID.StartsWith("a8") = True Then
            xmlDoc = Server.MapPath("\navigation\anwendungen.xml")
        End If
 
        xd.Load(xmlDoc)
 
        Dim node As System.Xml.XmlNode = xd.SelectSingleNode("//" & id & "")
        Dim newNode As System.Xml.XmlElement
        Dim nodeParent As System.Xml.XmlNode = node.ParentNode
        Dim nodeBefor As System.Xml.XmlNode = xd.SelectSingleNode("//" & _
          getNodeIDBefore(id) & "")
 
        nodeParent.RemoveChild(node)
        newNode = xd.CreateElement(getNodeID(id, node))
        newNode.SetAttribute("html", node.Attributes("html").InnerText)
        newNode.SetAttribute("img", node.Attributes("img").InnerText)
        newNode.SetAttribute("exp", "True")
        newNode.SetAttribute("url", "")
        newNode.SetAttribute("doc", node.Attributes("doc").InnerText)
 
        xd.InsertAfter(newNode, xd.DocumentElement(nodeBefor.Name))
        xd.Save(xmlDoc)
 
        loadxml()
Wenn ich den Code ausführe erhalte ich folgende Fehlermeldung:
Das Dokument hat bereits einen DocumentElement-Knoten. 
Beschreibung: Beim Ausführen der aktuellen Webanforderung ist ein _
  unverarbeiteter Fehler aufgetreten. Überprüfen Sie die Stapelüberwachung, um _
  weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der _
  Fehler im Code verursacht wurde. 
 
Ausnahmedetails: System.InvalidOperationException: Das Dokument hat bereits _
  einen DocumentElement-Knoten.
 
Quellfehler: 
 
 
Zeile 323:        'Response.Write(" newnode.Value: " & newNode.Value)
Zeile 324:        'node.AppendChild(newNode)
Zeile 325:        xd.InsertAfter(newNode, xd.DocumentElement(nodeBefor.Name))
Zeile 326:        xd.Save(xmlDoc)
Zeile 327:
Habt Ihr eine Ahnung was ich falsch mache?

Gruß

Brogi
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
XML/ InsertAfter bzw. xd.InsertBefore1.711Brogi22.05.06 09:36
Re: XML/ InsertAfter bzw. xd.InsertBefore1.108ModeratorDaveS24.05.06 08:36
Re: XML/ InsertAfter bzw. xd.InsertBefore1.057Brogi24.05.06 09:19
Re: XML/ InsertAfter bzw. xd.InsertBefore1.040ModeratorDaveS24.05.06 20:48

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel