XML-Operationen in Visual Studio 2008
15. Februar 2008 von Sascha Zaubi
Mit Language INtegrated Query (LINQ) hat Microsoft eine sehr interessante Neuerung in ihre aktuelle Entwicklungsumgebung Visual Studio 2008 gebracht. Hiermit lassen sich unter anderem Erzeugungs-, Änderungs- und Abfrageoperationen auf XML-Dateien anwenden. Wer in älteren Versionen von Microsoft Visual Studio mit XML gearbeitet hat, erinnert sich vielleicht noch an die komplexe Vorgehensweise zum Erstellen, Bearbeiten und Auslesen von XML-Dokumenten. LINQ bietet vereinfachte Funktionen, die den Umgang mit XML wesentlich angenehmer gestalten.
Das folgende Codebeispiel (Visual Basic) zeigt das Erstellen einer XML-Datei mithilfe von LINQ:
Dim strXmlPath As String = "C:\Temp\XmlFile.xml" Dim objXmlDocument As XDocument = _ <config> <name>foo</name> <surname>bar</surname> </config> objXmlDocument.Save(strXmlPath)
Ein einzelnes XML-Element kann beispielsweise folgendermaßen geändert werden:
objXmlDocument.<config>.<name>.Value = "Test"
Der folgende Code erzeugt ein neues Element unter “config”:
objXmlDocument.Element("config").Add(MyAddress)
Um das Element wieder zu entfernen, kann folgender Code angewandt werden:
objXmlDocument.Element("config").Element("address").Remove()
Der folgende Code weist einem XML-Element ein Attribut zu und entfernt dieses anschließend wieder:
objXmlDocument.Element("config").Element("address").Add(New XAttribute("type", "private")) objXmlDocument.Element("config").Element("address").Attributes("type").Remove()
Darüber hinaus bietet LINQ noch viele weitere Funktionen, wie z. B. die Aktivierung von IntelliSense für XML. Hierzu ist allerdings das Einbinden eines XML-Schemas in das Visual Studio Projekt erforderlich. Nähere Informationen dazu findet ihr in der MSDN-Datenbank unter folgendem Link: XML in Visual Basic Ich hoffe, dass ihr mit den neuen Funktionen etwas anfangen könnt. Ich persönlich finde den Umgang mit XML durch LINQ wesentlich komfortabler und werde in Zukunft einige Code-Beispiele veröffentlichen. Fragen und Anmerkungen sind jederzeit willkommen. MfG Zaubi
No related posts.
Ähnliche Artikel bereitgestellt von Yet Another Related Posts Plugin.
Hallo,
habe eben angefangen mich mit XML und vb.net zu befassen…
objXmlDocument…Value = “Test”
Hier scheint dir wohl ein kleiner Fehler unterlaufen zu sein…
Du kombinierst hier irgendwie den Funktionsaufruf und die “AppendString”-Methode…
Sollte wohl eher so lauten:
objXmlDocument.Element(“config”).Element(“name”).SetValue(“Test”)
oder natrlich so:
objXmlDocument…Value = “Test” (wohlgemerkt ohne das strin zeugs am Ende
)
grüße,
dognose
hmm, da wo die Pünkthen stehen hat dein script die “Eckklammer” Attribute rausgekillt
naja, auf jedem Fall sollte da am Ende das (code feld 2) Das End-Config und das End-Name Tag weg
Hallo dognose!
Danke für den Hinweis. Die schließenden XML-Tags müssen wohl nach dem letzten WordPress- bzw. SyntaxHighlighter-Update hinzugekommen sein. Wird sofort korrigiert.
Beste Grüße,
Zaubi
Hiho,
eine derartige Info hab ich grad schon eine Weile gesucht. Danke!
Wie kann ich ein Element ändern, wenn ich mehrere ähnliche Strukturen habe, die sich nur durch ihre Werte, nicht durch ihre Elementnamen unterscheiden?
Ich möchte beispielsweise in
1
xyz
2
xyz
den Namen ersetzen bei dem Das Element die ID 1 beinhaltet.
Man könnte zwar die verwenden, aber ich habe nicht die Möglichkeit die einkommende XML zu ändern…
Danke!
Hier nochmal meine Struktur, da die spitzen Klammern geschluckt wurden.
[Elemente]
[Element]
[ID]1[/ID]
[Name]xyz[/Name]
[/Element]
[Element]
[ID]2[/ID]
[Name]xyz[/Name]
[/Element]
[/Elemente]
Ich würd gern bei ID2 den Namen ersetzen
Es sollte auch heißen:
Man könnte zwar [Element id=”1″| verwenden, aber ich habe nicht die Möglichkeit die einkommende XML zu ändern…
Danke nochmals
Hi Kai!
Danke für deinen Kommentar.
Ich würde sagen, dass die eleganteste Methode zum Ändern eines XML-Elements darin besteht, jeden Knoten mit einer FOR EACH Schleife zu durchlaufen und den Unterknoten “ID” auf seinen Inhalt zu überprüfen. Mit einer IF-Anweisung geht das problemlos. Im Fuß der IF-Anweisung ändest du dann den Inhalt des Unterknotens “Name”.
Im Moment fehlt mir leider die Zeit, das komplette Beispiel runterzucoden, aber ich hoffe das hilft dir trotzdem.
Gruß,
Zaubi