Erstellen von XML-Knoten
Ich habe die folgende XML-Datei, wo ich will hinzufügen, ein neues Kind unter den ersten <Profile_Path></Profile_Path>
Knoten.
Ursprünglichen XML:
<?xml version="1.0" encoding="utf-8"?>
<Profiles>
<Profile>
<Profile_Name>Profile 1</Profile_Name>
<Profile_Path>E:\Test</Profile_Path>
</Profile>
<Profile>
<Profile_Name>Profile 2</Profile_Name>
<Profile_Path>E:\Test</Profile_Path>
</Profile>
</Profiles>
Nach ausführen des Codes...
Public Sub CreateProjectXml()
ProfileList.Load(xml_path)
Dim profilesNode As XmlNode = ProfileList.SelectSingleNode("Profiles")
Dim profiles As XmlNodeList = profilesNode.SelectNodes("Profile")
Dim profile As XmlNode = profiles(2)
Dim project_info As XmlElement = ProfileList.CreateElement("Project_Name")
project_info.InnerText = "Project 1"
ProfileList.DocumentElement.AppendChild(project_info)
ProfileList.Save(xml_path)
End Sub
Ich Folgendes Resultat erhalten:
<?xml version="1.0" encoding="utf-8"?>
<Profiles>
<Profile>
<Profile_Name>Profile 1</Profile_Name>
<Profile_Path>E:\Test</Profile_Path>
</Profile>
<Profile>
<Profile_Name>Profile 2</Profile_Name>
<Profile_Path>E:\Test</Profile_Path>
</Profile>
<Project_Name>Project 1</Project_Name>
</Profiles>
Mir bitte helfen mit dem richtigen code!
Es wäre hilfreich, wenn Sie gab auch ein Beispiel von der gewünschten XML-Ausgabe. Es ist nicht ganz klar, was Sie versuchen zu erreichen.
InformationsquelleAutor guest | 2013-10-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das erste problem ist, dass Sie anfügen das Kind durch den Aufruf
ProfileList.DocumentElement.AppendChild
. Diese Methode append, der das Kind zum Dokument-element, welches das root-level -Profiles
element. Wenn Sie möchten, fügen Sie die Kind, um die erstenProfile
element, die Sie brauchen, um es zu ändern:Beachten Sie im obigen Beispiel, änderte ich es zu benutzen
profiles(0)
stattprofiles(2)
, so wird die erste statt der Dritten.Jedoch, es ist erwähnenswert, dass
SelectNodes
undSelectSingleNode
verwenden XPath. Das bedeutet, Sie vereinfachen Ihre Logik wesentlich nur durch die Auswahl, die ein element, das Sie wirklich wollen, zum Beispiel, wenn alle Sie wollen, ist der ersteProfile
element, können Sie einfach diesen:Den
SelectSingleNode
Methode wird nur das erste passende element wie auch immer, so brauchen Sie nicht angeben, dass der index in den XPath -, aber wenn Sie wollen, noch deutlicher, Sie könnte angeben, dass der index nur die ersten ein, wie diese:Oder, wenn Sie wollten, um die Dritte
Profile
element, man konnte mit diesem XPath statt:Oder, wenn Sie wollten, um die
Profile
element, die eineProfile_Name
gleich "Profil 2" können Sie genau dies tun:Etc. Wenn Sie gehen, um die Arbeit mit XML viel, es würde sich lohnen Ihre Bemühungen zu verbringen einige Zeit lernen Sie die Grundlagen von XPath. XPath ist ein standard-XML-query-Sprache, die in vielen XML-tools und Programmiersprachen. Zum Beispiel, wenn Sie jemals verwenden Sie XSLT, werden Sie brauchen, um zu verstehen, XPath. XPath verwendet werden kann, mit der
XmlDocument
Klasse, wie ich oben erwähnte, und auch mit den neuerenXDocument
Klasse.Die alternative zu XPath ist die Verwendung von LINQ. LINQ ist eine proprietäre Microsoft-Technologie, so finden Sie keine Unterstützung in anderen tools und Sprachen außerhalb .NET, aber viele Leute bevorzugen es. Die neue
XDocument
Klasse ist entworfen, um XML einfach zu arbeiten mit, über LINQ. In Kombination mit VB.NET's Unterstützung für inline-XML-Literale, diese Aufgabe ist eigentlich ganz einfach mitXDocument
:InformationsquelleAutor Steven Doggart
Alex ich denke, Sie sollten den folgenden code verwenden
Statt
InformationsquelleAutor Christos
Da Sie mit VB.Net Sie können die Arbeit mit XML-der einfache Weg.
Nun
xml
istalso im Grunde muss nur dieses:
InformationsquelleAutor sloth