使用XDocument.Load

时间:2016-01-14 14:41:48

标签: c# xml xml-parsing linq-to-xml

据我所知,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(字符串uri)保存它,但结果LT和GT符号没有被&amp;替换回来。 LT;和&amp; GT;它仍然看起来像&lt;和&gt;。实际上,当我再次加载它时,没有抛出任何异常。 这让我感到困惑。如果这些符号无效,它们如何在保存的xml文件中存在?如何用特殊符号替换保存我的xml文件?我读取的xml文件和我要保存的XDocument都有一个UTF-8编码的声明。

谢谢!

2 个答案:

答案 0 :(得分:1)

在属性中,<>字符有效,这就是为什么不替换它们的原因。在Text元素中,它们始终具有权限:

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

同样,"'被允许作为Text元素,但将根据封闭的引用类型在属性中替换。

  

如何使用特殊符号替换来保存我的xml文件?

你不需要关心它。基础XmlWriter将进行必要的替换。

答案 1 :(得分:0)

“问题3.23:XML中有哪些特殊字符?

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

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