XDocument.ToString() gouttes d'Encodage XML Tag
Est-il possible d'obtenir le codage xml dans la Fonction toString ()?
Exemple:
xml.Save("myfile.xml");
conduit à
<?xml version="1.0" encoding="utf-8"?>
<Cooperations>
<Cooperation>
<CooperationId>xxx</CooperationId>
<CooperationName>Allianz Konzern</CooperationName>
<LogicalCustomers>
Mais
tb_output.Text = xml.toString();
conduit à une sortie comme celle
<Cooperations>
<Cooperation>
<CooperationId>xxx</CooperationId>
<CooperationName>Allianz Konzern</CooperationName>
<LogicalCustomers>
...
Vous devez vous connecter pour publier un commentaire.
Soit écrire explicitement la déclaration, ou de l'utilisation d'un
StringWriter
et appelSave()
:Vous pouvez facilement ajouter que comme une extension de la méthode:
Cela a l'avantage de ne pas aller bang si il y n'est pas une déclaration 🙂
Ensuite, vous pouvez utiliser:
Noter que l'utilisation de l'utf-16 comme le codage, parce que c'est l'implicite de l'encodage en
StringWriter
. Vous pouvez l'influence que vous-même, bien qu'en créant une sous-classe deStringWriter
, par exemple toujours utiliser de l'UTF-8.XDocument.Save(TextWriter)
la mise en œuvre et il ignore simplement la déclaration de l'encodage, par opposition àXDocument.Save(String)
ouXDocument.Save(Stream)
implémentations. Je me demande pourquoi...StringWriter
, sauf si vous utilisez une qui remplace laEncoding
de la propriété. J'en ai une autre réponse à ce sujet. Je pensais que vous disiez qu'il était à la baisse "encodage", entièrement...XDocument.Save(String)
ouXDocument.Save(Stream)
) si nous voulons conserver la déclaration de l'encodage? Quelque chose comme dans ce démo?StringWriter
qui revendique le même encodage, en gros.La Déclaration de la propriété contient la déclaration XML. Pour obtenir le contenu en plus de la déclaration, vous pouvez effectuer les opérations suivantes:
tb_output.Text = @"<?xml version=""1.0"" encoding=""utf-8"" ?>" + xml;
... = $"{xdoc.Declaration}{Environment.NewLine}{xdoc}";
utiliser ceci:
J'ai aimé cette
Veuillez voir ci-dessous pour ce que je reçois dans distributorInfo
Semblable à l'autre +1 réponses, mais un peu plus de détails sur la déclaration, et un peu plus précise de concaténation.
<xml />
déclaration doit être sur sa propre ligne dans un format XML, donc je fais en sorte que nous ayons la nouvelle ligne ajoutée.REMARQUE: l'utilisation de
Environment.Newline
donc, il va produire de la de la plate-forme de saut de ligneÀ la fois des résultats de produire:
Vous pouvez également utiliser un XmlWriter et d'appeler la
méthode.
Quelques-uns de ces réponses résoudre l'affiche de la demande, mais semble trop compliqué. Voici une simple extension de la méthode qui évite la nécessité d'écrivain, s'occupe d'une absence de déclaration et prend en charge la norme ToString SaveOptions paramètre.
Utiliser l'extension, il suffit de remplacer
xml.ToString()
avecxml.ToXmlString()