在XML C#中保留小数字符实体

问题描述 投票:0回答:2

我使用XmlDocument类加载XML,并使用XmlWriter类生成文件。我想保留xml中存在的十进制字符实体(粗体字符),如下图所示,

<car id="wait for the signal &#10;&#10; then proceed">

尝试过类似XmlTextReader的选项,但是没有运气。处理完文件中的上一行之后,如下所示,

    <car id="wait for the signal

then proceed">

<car id="wait for the signal &#xA;&#xA; then proceed">

我使用的XmlWriter代码块,

XmlWriterSettings xmlWriterSettings = new XmlWriterSettings
{
    Indent = true,
    Encoding = encoding,
    NewLineHandling = NewLineHandling.None
};
XmlDataDocument xmlDataDocument = new XmlDataDocument
{
    PreserveWhitespace = true
};
xmlDataDocument.LoadXml(xmlString);
using (XmlWriter writer = XmlWriter.Create(filepath, xmlWriterSettings))
{
    if (writer != null)
    {
        xmlDataDocument.Save(writer);
    }
}

非常感谢任何帮助。

c# xml character-entities
2个回答
0
投票

我不确定您要在这里实现什么。

&#10;&#xA;都相等。他们都引用换行符。一种是十进制形式,另一种是十六进制形式。两者都可以使用XML解析器。

如果您阅读正式的XML Documentation,则它指定允许使用两种引用方法。

为什么需要保留小数形式?


0
投票

就XML解析器而言,它将始终以与对待字符本身完全相同的方式对待数字字符引用。

您唯一可能的前进方式是在XML解析器看到文件之前对其进行预处理,用其他字符(例如&)替换§。然后,当然,然后逆转该过程。

© www.soinside.com 2019 - 2024. All rights reserved.