Wie kann ich aktualisieren/ersetzen ein element der ein XElement aus einem string?
So, hier ist mein Fall.
Habe ich ein XElement, nennen wir es mal root, die Nachkommen, die Nachkommen, etc. Ich ziehe ein Nachkomme mit LINQ to XML, laden Sie Sie in eine memo-editor mit .ToString()
und Bearbeiten. Jetzt möchte ich aktualisieren/ersetzen der original untergeordnete element mit der bearbeiteten version.
Lassen Sie mich noch erwähnen, dass dies eine einfache XML-Datei ohne schema, nicht mit DOM, etc. Ich muss nur in der Lage sein, zu Bearbeiten und zu aktualisieren/ersetzen eines Elements.
Hier ein mockup von meinem XML:
<Root>
<Genre Name="Rock">
<Artist Name="Pink Floyd">
<BandMembers>
<Member>Nick Mason</Member>
<Member>Syd Barret</Member>
<Member>David Gilmour</Member>
<Member>Roger Water</Member>
<Member>Richard Wright</Member>
</BandMembers>
<Category>Favorite band of all time</Category>
</Artist>
<Artist Name="Led Zepelin">
<Category>Love the band</Category>
</Artist>
</Genre>
<Genre Name="Blues">
<Artist Name="Muddy Waters">
<Instrument>Harmonica</Instrument>
</Artist>
<Artist Name="Howling Wolf">
<Instrument>Guitar</Instrument>
</Artist>
</Genre>
</Root>
Nun sagen, dass ich Bearbeiten möchte "Pink Floyd" - element zu korrigieren Roger Waters' letzten Namen. Ich bekomme das element, es in einen string konvertieren, laden Sie Sie in meinem editor, nehmen Sie die änderungen, die ich will, und wandelt es wieder in ein XElement mit .Parse()
.
Nun, wie kann ich aktualisieren/ersetzen der "Pink Floyd" - Knoten in meiner ursprünglichen XML?
Ich aktualisiert die XML-Datei zu setzen Matschig und Heulen im inneren der Blues <Gattung> - tag. Jetzt sind Sie zu Hause! 😉
Oops! Das ist, was ich kostenlos bekommen-übergabe der XML. =)
InformationsquelleAutor Welton v3.58 | 2011-04-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie die
XNode.ReplaceWith
Methode:Sollten Sie einige Fehler überprüfen obwohl. Ich verwendet
Single
da bin ich mir sicher, dass der Knoten vorhanden ist, aber wenn es eine chance, es ist nicht, sollten Sie Sie verwendenSingleOrDefault
und überprüfennull
vor mit dem Ergebnis.Auch, wenn die Eingabe ungültig ist, müssen Sie wickeln Sie den obigen code in einen try/catch und Griff
XmlException
könnte geworfen werden.In dotnet 4.7.2 (ich habe nicht die Mühe gemacht die Prüfung an anderer Stelle) es gibt keine XElement.ReplaceWith aber ein XNode.ReplaceWith. Ich wage es nicht, aktualisieren Sie die Antwort als URL sieht also richtig so zu empfehlen dort einmal wurde ein XElement.ReplaceWith.
InformationsquelleAutor Ahmad Mageed