Я сейчас схожу с ума от C#
и XmlDocuments.
Мне нужно преобразовать данные 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>
У меня есть другие не-html теги в XML, поэтому, пожалуйста, не предоставляйте решения для анализа HTML :/
Я знаю, что могу заменить символы на String.Replace()
, но это грязно и небезопасно (и медленно с около 20 тыс. строк).
Я надеюсь, что есть более простой способ сделать это.
С уважением,
Эривас
InnerText
с содержимым XML, это не имеет ничего общего с кодировкой текста. Если вам нужен «более простой способ», я настоятельно рекомендую отказаться отXmlDocument
в пользу LINQ to XML. - person Charles Mager   schedule 13.07.2016InnerXml
вместоInnerText
? - person Manfred Radlwimmer   schedule 13.07.2016