Je suis nouveau sur LINQ to XML. Après avoir construit XDocument
, comment en obtenir le OuterXml
comme vous l'avez fait avec XmlDocument
?
Il vous suffit d'utiliser la méthode ToString () substituée de l'objet:
XDocument xmlDoc ...
string xml = xmlDoc.ToString();
Cela fonctionne avec tous les XObjects, comme XElement, etc.
Je ne sais pas quand cela a changé, mais aujourd'hui (juillet 2017) en essayant les réponses, j'ai
"System.Xml.XmlDocument"
Au lieu de ToString()
, vous pouvez utiliser la façon initialement prévue d'accéder au contenu XmlDocument
: écrire le doc xml dans un flux.
XmlDocument xml = ...;
string result;
using (StringWriter writer = new StringWriter())
{
xml.Save(writer);
result = writer.ToString();
}
Utilisez ToString () pour convertir XDocument en chaîne:
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();
Faire XDocument.ToString () peut ne pas obtenir le XML complet.
Afin d'obtenir la déclaration XML au début du document XML sous forme de chaîne, utilisez la méthode XDocument.Save ():
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());