Gibt es eine Möglichkeit, die XML-Codierung in der Funktion toString () abzurufen?
Beispiel:
xml.Save("myfile.xml");
führt zu
<?xml version="1.0" encoding="utf-8"?>
<Cooperations>
<Cooperation>
<CooperationId>xxx</CooperationId>
<CooperationName>Allianz Konzern</CooperationName>
<LogicalCustomers>
Aber
tb_output.Text = xml.toString();
führt zu einer solchen Ausgabe
<Cooperations>
<Cooperation>
<CooperationId>xxx</CooperationId>
<CooperationName>Allianz Konzern</CooperationName>
<LogicalCustomers>
...
c#
linq-to-xml
Henrik P. Hessel
quelle
quelle
XDocument.Save(TextWriter)
Implementierung angesehen und sie ignoriert nur die Codierung der Deklaration im Gegensatz zuXDocument.Save(String)
oderXDocument.Save(Stream)
Implementierungen. Ich frage mich warum ...StringWriter
, es sei denn, Sie verwenden eine, die dieEncoding
Eigenschaft überschreibt . Ich habe noch eine Antwort darauf. Ich dachte, Sie sagten, es würde die "Codierung" vollständigDie Declaration-Eigenschaft enthält die XML-Deklaration. Um den Inhalt plus Deklaration zu erhalten, können Sie Folgendes tun:
quelle
tb_output.Text = @"<?xml version=""1.0"" encoding=""utf-8"" ?>" + xml;
... = $"{xdoc.Declaration}{Environment.NewLine}{xdoc}";
benutze das:
quelle
Das hat mir gefallen
Bitte sehen Sie unten, was ich in DistributorInfo bekomme
quelle
Ähnlich wie bei den anderen +1 Antworten, jedoch etwas detaillierter über die Deklaration und eine etwas genauere Verkettung.
<xml />
Die Deklaration sollte in einem formatierten XML in einer eigenen Zeile stehen, daher stelle ich sicher, dass die neue Zeile hinzugefügt wurde. HINWEIS:Environment.Newline
Wenn Sie dies verwenden, wird die plattformspezifische Newline erstelltBeide Ergebnisse ergeben:
quelle
Einige dieser Antworten lösen die Anfrage des Posters, scheinen jedoch zu kompliziert zu sein. Hier ist eine einfache Erweiterungsmethode, die die Notwendigkeit eines separaten Writers vermeidet, eine fehlende Deklaration behandelt und den Standardparameter ToString SaveOptions unterstützt.
Um die Erweiterung zu verwenden, ersetzen Sie einfach
xml.ToString()
mitxml.ToXmlString()
quelle
Sie können auch einen XmlWriter verwenden und den aufrufen
Methode.
quelle
quelle