XML definiert zwei Arten von Leerzeichen: signifikant und unbedeutend:
Insignificant Leerzeichen ist die Leerzeichen zwischen den Elementen wo Textinhalt nicht auftritt, während signifikante Leerzeichen der Leerraum innerhalb von Elementen ist, die Textinhalt enthalten. Sie können die Grafik in this article nützlich finden, um den Unterschied zu zeigen.
Was Sie in Ihrem translation
Element haben, ist signifikant Whitespace; Das Element enthält Text, sodass davon ausgegangen wird, dass es Teil des Inhalts des Elements ist. Ohne ein Schema oder eine DTD, die besagt, dass es reduziert werden kann, wird keine Menge die Whitespace-Behandlung beim Lesen oder Schreiben ändern, dies entfernen. Diese Optionen beziehen sich nur auf den unbedeutenden Leerzeichen.
Was können Sie tun, ist Ihre eigene Verarbeitung gelten: LINQ to XML verwenden, können Sie den Leerraum aller Elemente trimmen, die nur Text so etwas wie dieses enthalten, wobei man:
var textElements = doc.Descendants()
.Where(element => element.Nodes().All(node => node is XText));
foreach (var element in textElements)
{
element.Value = element.Value.Trim();
}
Siehe this fiddle für eine Demo.
BITTE verwenden Sie die Formatierungshilfe und die Vorschau, um sicherzustellen, dass Ihre Frage mindestens leserlich aussieht, BEVOR Sie sie posten. –
danke @ J.Steen – user1870169
Ersetzen Sie 'System.Environment.NewLine' durch' '' 'vielleicht? – Alkasai