Si les Embellir méthode est appelée pour un XmlDocument
qui contient déjà un XmlProcessingInstruction
nœud enfant l'exception suivante est générée:
Ne peut pas écrire la déclaration XML.
WriteStartDocument méthode a déjà
écrit-il.
C'est ma version modifiée de l'original pour se débarrasser de l'exception:
private static string beautify(
XmlDocument doc)
{
var sb = new StringBuilder();
var settings =
new XmlWriterSettings
{
Indent = true,
IndentChars = @" ",
NewLineChars = Environment.NewLine,
NewLineHandling = NewLineHandling.Replace,
};
using (var writer = XmlWriter.Create(sb, settings))
{
if (doc.ChildNodes[0] is XmlProcessingInstruction)
{
doc.RemoveChild(doc.ChildNodes[0]);
}
doc.Save(writer);
return sb.ToString();
}
}
Il fonctionne pour moi maintenant, probablement, vous auriez besoin de numériser tous les nœuds enfants de l' XmlProcessingInstruction
nœud, et pas seulement le premier?