使用 XDocument.Load 时特殊符号消失

Special symbols disappear when using XDocument.Load

据我所知,XML 中有几个符号应该被替换,因为它们在 xml 中的纯形式无效:

< - &lt;
& - &amp;
> - &gt;
" - &quot;
' - &apos;

因此,我正在尝试使用 XDocument.Load(字符串 uri)加载 xml 文档。 例如,我的 xml 文档字符串如下所示:

        <net name="&lt;const0&gt;_1"/>

但是当我的 xml 被加载时,这个字符串在 XDocument 中表示为

        <net name="<const0>_1"/>

我尝试使用 xdocument.Save(string uri) 保存它,但结果 LT 和 GT 符号没有被替换回 。实际上,当我再次加载它时,没有抛出异常。 这让我很困惑。如果这些符号无效,它们怎么会存在于已保存的 xml 文件中?如何保存替换特殊符号的 xml 文件?我正在读取的 xml 文件和我要保存的 XDocument 有一个使用 UTF-8 编码的声明。

谢谢!

"Q 3.23: XML中的特殊字符是什么?

 Just five: &lt; (<), &amp; (&), &gt; (>), &quot; ("), and &apos; (')."

http://xml.silmaril.ie/specials.html

在属性中,<> 字符是有效的,这就是它们没有被替换的原因。在 Text 元素中,它们总是实体化的:

<net>
    <name>&lt;const0&gt;_1</name>
</net>

同样,"' 可以作为文本元素,但将在属性中替换,具体取决于封闭的引号类型。

How can I save my xml file with special symbols replacement?

你不需要关心那个。底层 XmlWriter 将进行必要的替换。