Ich möchte eine XML-Datendatei (beachten Sie, dass dies kein Schema, .xsd, Datei ist) programmatisch C# verwenden (so ein externer XML-Editor wird nicht funktionieren, es sei denn es hat eine API). Ein Beispiel für die Baumstruktur:Reduzieren einer XML-Datei mit Ref-Attributen
<root>
<A>
<B att="val">
<C>
someData
</C>
</B>
</A>
<A>
<B>
someOtherData
</B>
<B>
moreData
</B>
</A>
</root>
Ich mag es abzuflachen zu:
<root>
<A>
<B ref="b1" />
</A>
<A>
<B ref="b2" />
<B ref="b3" />
</A>
<B id="b1" att="val">
<C ref="c1" />
</B>
<B id="b2">
someOtherData
</B>
<B id="b3">
moreData
</B>
<C id="c1">
someData
</C>
</root>
Gibt es eine Möglichkeit, diese mit C# zu erreichen?
Und gibt es eine Möglichkeit, die flache XML zurück in die Baumstruktur zu verwandeln? Ich möchte etwas so allgemein wie möglich, so dass jede XML-Datei als solche abgeflacht werden könnte.
Es gibt eine similar question on so, aber es behandelt nicht mit refs.
wie ein Sound Guter Anwendungsfall für XSLT. Übrigens nehmen wir an, dass Ihr Beispiel-XML-Dokument kein vollständiges Dokument ist, sondern ein XML-Fragment, da es mehr als ein Element der obersten Ebene enthält. Damit die Ausgabe wohlgeformtes XML ist, müssen Sie ein einzelnes Top-Level-Element haben. Wie möchten Sie mit Attributen und Textknoten umgehen? – LarsH
@LarsH gute Punkte, ich habe die Frage aktualisiert –
@sprocket: Danke für die klärenden Details. Ich arbeite an einer XSLT-Lösung .... sollte ziemlich einfach sein, aber ich habe heute Morgen einige andere dringende Verpflichtungen. Wenn Sie dieses 'xslt' markieren, wetten Sie, dass Sie schnell eine Lösung von jemand anderem haben. Außerdem fehlt Ihrem letzten schließenden Tag "" in Ihrem Eingabe-XML der Schrägstrich. – LarsH