今はC#
とXmlDocumentsで気になっています。C#Xmlエンコーディング
XMLデータを別のXMLに解析する必要がありますが、特殊文字を取得することができません。
私はXmlDocumentとXmlNodeを使用しています。 XmlDocument.CreateXmlDeclaration("1.0", "UTF-8", "yes");
- - XmlTextWriter writer = new XmlTextWriter(outputDir + "systems.xml", Encoding.UTF8);
私は確かに知って何
:
- 入力XMLもUTF-8
ある - "InnerTextプロパティ" 値は交換せずに符号化されて、私がこれまで試したどのような
文字
ここにいくつかのコードがあります(多くのコードではありません...多くのコードに...)。
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();
しかし、私が得るには、例として、このです:
<intro><p>Whether your project [...]</intro>
の代わりにこの:
<intro><p>Whether your project [...] </p></intro>
私はXMLで他の非HTMLタグを持っているので、提供しないでくださいHTML解析ソリューション:/
文字をString.Replace()
に置き換えることができますが、それは汚れていて危険です(約20K行で遅くなります)。
もっと簡単な方法があることを願っています。
敬具、
Eriwas
[mcve]を入力してください。あなたのコードには、関連性のない多くのものが含まれていますが、問題がどこにあるかは不明です。可能なヒントとして、XMLコンテンツで 'InnerText'を設定すると、この問題が発生します。テキストエンコーディングとは関係ありません。 「より簡単な方法」が必要な場合は、LINQ to XMLのXmlDocumentを削除することを強くお勧めします。 –
'InnerText'の代わりに' InnerXml'を試しましたか? –