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

本文关键字:Load 消失 XDocument 特殊符号 | 更新日期: 2023-09-27 18:30:27

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

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

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

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

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

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

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

谢谢!

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

在属性中,<>字符是有效的,这就是它们不被替换的原因。在文本元素中,它们始终被实体化:

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

同样,允许将"'作为 Text 元素,但将根据括起来的引号类型在属性中替换。

如何保存带有特殊符号替换的 xml 文件?

你不需要关心这个。基础XmlWriter将执行必要的替换。

"Q 3.23: XML 中有哪些特殊字符?

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

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