Ich flippe gerade mit C#
und XmlDocuments aus.C# Xml Encoding
Ich muss XML-Daten in ein anderes XML analysieren, aber ich kann keine Sonderzeichen zum Arbeiten bekommen.
Ich arbeite mit XmlDocument und XmlNode.
Was habe ich versucht, so weit:
- XmlDocument.CreateXmlDeclaration("1.0", "UTF-8", "yes");
- XmlTextWriter writer = new XmlTextWriter(outputDir + "systems.xml", Encoding.UTF8);
Was ich weiß sicher:
- Die XML-Eingabe ist auch UTF-8
- Der "Innertext" Wert ohne Austausch der codiert wird, Zeichen
Hier ist ein Code (nicht alle ... Art und Weise zu viel Code):
XmlDocument newXml = new XmlDocument();
newXml = (XmlDocument)systemsTemplate.Clone();
newXml.CreateXmlDeclaration("1.0", "UTF-8", "yes");
newXml.SelectSingleNode("systems").RemoveAll();
foreach(XmlNode categories in exSystems.SelectNodes("root/Content/Systems/SystemLine"))
{
XmlNode categorieSystemNode = systemsTemplate.SelectSingleNode("systems/system").Clone();
categorieSystemNode.RemoveAll();
XmlNode importIdNode = systemsTemplate.SelectSingleNode("systems/system/import_id").Clone();
string import_id = categories.Attributes["nodeName"].Value;
importIdNode.InnerText = import_id;
categorieSystemNode.AppendChild(importIdNode);
[way more Nodes which I proceed like this]
}
newXml.SelectSingleNode("systems").AppendChild(newXml.ImportNode(categorieSystemNode, true));
XmlTextWriter writer = new XmlTextWriter(outputDir + "systems.xml", Encoding.UTF8);
writer.Formatting = Formatting.Indented;
newXml.Save(writer);
writer.Flush();
writer.Close();
Aber ich bekommen, was ist dies als Beispiel:
<intro><p>Whether your project [...]</intro>
Statt dessen:
<intro><p>Whether your project [...] </p></intro>
Ich habe tun andere Nicht-HTML-Tags in der XML so bitte nicht bieten HTML-Parsing-Lösungen:/
Ich weiß, ich könnte die Zeichen durch String.Replace()
ersetzen, aber das ist schmutzig und unsicher (und langsam mit etwa 20K Zeilen).
Ich hoffe, es gibt eine einfachere Möglichkeit, dies zu tun.
Mit freundlichen Grüßen,
Eriwas
Bitte geben Sie eine [mcve] an. Ihr Code enthält viele Dinge, die nicht relevant sind, und es ist nicht klar, wo das Problem liegt. Als möglichen Hinweis erhalten Sie dieses Problem, wenn Sie 'InnerText' mit XML-Inhalt festlegen, es hat nichts mit der Textcodierung zu tun. Wenn Sie einen "einfacheren Weg" wünschen, würde ich Ihnen dringend empfehlen, 'XmlDocument' für LINQ to XML zu entfernen. –
Haben Sie 'InnerXml' anstelle von' InnerText' ausprobiert? –