Ich bin neu in LINQ to XML. XDocument
Wie bekommen Sie das , nachdem Sie gebaut haben , OuterXml
so wie Sie es gemacht haben XmlDocument
?
Ich bin neu in LINQ to XML. XDocument
Wie bekommen Sie das , nachdem Sie gebaut haben , OuterXml
so wie Sie es gemacht haben XmlDocument
?
Antworten:
Sie müssen nur die überschriebene ToString () -Methode des Objekts verwenden:
XDocument xmlDoc ...
string xml = xmlDoc.ToString();
Dies funktioniert mit allen XObjects wie XElement usw.
System.Xml.XmlDocument
&
Zeichen oder andere Sonderzeichen enthält, funktioniert dies nicht
Ich weiß nicht, wann sich das geändert hat, aber heute (Juli 2017) habe ich beim Ausprobieren die Antworten bekommen
"System.Xml.XmlDocument"
Stattdessen ToString()
können Sie die ursprünglich vorgesehene Art des Zugriffs auf den XmlDocument
Inhalt verwenden: Schreiben des XML-Dokuments in einen Stream.
XmlDocument xml = ...;
string result;
using (StringWriter writer = new StringWriter())
{
xml.Save(writer);
result = writer.ToString();
}
Wenn Sie XDocument.ToString () ausführen, erhalten Sie möglicherweise nicht das vollständige XML.
Verwenden Sie die Methode XDocument.Save (), um die XML-Deklaration am Anfang des XML-Dokuments als Zeichenfolge abzurufen:
var ms = new MemoryStream();
using (var xw = XmlWriter.Create(new StreamWriter(ms, Encoding.GetEncoding("ISO-8859-1"))))
new XDocument(new XElement("Root", new XElement("Leaf", "data"))).Save(xw);
var myXml = Encoding.GetEncoding("ISO-8859-1").GetString(ms.ToArray());
StringWriter()
zu Save()
direkt.
Verwenden Sie ToString (), um XDocument in eine Zeichenfolge zu konvertieren:
string result = string.Empty;
XElement root = new XElement("xml",
new XElement("MsgType", "<![CDATA[" + "text" + "]]>"),
new XElement("Content", "<![CDATA[" + "Hi, this is Wilson Wu Testing for you! You can ask any question but no answer can be replied...." + "]]>"),
new XElement("FuncFlag", 0)
);
result = root.ToString();