Existe-t-il un moyen d'obtenir le codage XML dans la fonction toString ()?
Exemple:
xml.Save("myfile.xml");
mène à
<?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-ci
<Cooperations>
<Cooperation>
<CooperationId>xxx</CooperationId>
<CooperationName>Allianz Konzern</CooperationName>
<LogicalCustomers>
...
c#
linq-to-xml
Henrik P. Hessel
la source
la source
XDocument.Save(TextWriter)
implémentation et il ignore simplement le codage de la déclaration, par opposition aux implémentationsXDocument.Save(String)
ouXDocument.Save(Stream)
. Je me demande pourquoi ...StringWriter
, sauf si vous en utilisez un qui remplace laEncoding
propriété. J'ai une autre réponse à ce sujet. Je pensais que vous disiez qu'il abandonnait entièrement "l'encodage" ...La propriété Declaration contiendra la déclaration XML. Pour obtenir le contenu plus la déclaration, vous pouvez effectuer les opérations suivantes:
la source
tb_output.Text = @"<?xml version=""1.0"" encoding=""utf-8"" ?>" + xml;
... = $"{xdoc.Declaration}{Environment.NewLine}{xdoc}";
utilisez ceci:
la source
J'ai aimé ça
Veuillez voir ci-dessous ce que j'obtiens dans le distributeur
la source
Similaire aux autres réponses +1, mais un peu plus de détails sur la déclaration et une concaténation légèrement plus précise.
<xml />
La déclaration doit être sur sa propre ligne dans un XML formaté, donc je m'assure que nous avons ajouté la nouvelle ligne. REMARQUE: en utilisantEnvironment.Newline
ainsi, il produira la nouvelle ligne spécifique à la plate-formeLes deux résultats produisent:
la source
Certaines de ces réponses répondent à la demande de l'affiche, mais semblent trop compliquées. Voici une méthode d'extension simple qui évite le besoin d'un rédacteur séparé, gère une déclaration manquante et prend en charge le paramètre standard ToString SaveOptions.
Pour utiliser l'extension, remplacez simplement
xml.ToString()
parxml.ToXmlString()
la source
Vous pouvez également utiliser un XmlWriter et appeler le
méthode.
la source
la source