我想使用<element>&</element>
生成System.Xml.Linq.XElement
。
我试过了这个:new XElement("element", "&")
但是它逃脱了与号并产生了:<element>&amp;</element>
我能想到的唯一解决方法是创建一个继承自XText
的自定义类,覆盖WriteTo
方法并使用XmlWriter
=&gt; WriteEntityRef
方法。在我看来,这有点矫枉过正。还有另一种方法吗?
答案 0 :(得分:2)
你已经在评论中得到了解决方案,只是一些背景知识:
您必须了解内容(外部 XML)与表示 XML >之间的区别。在XML之外,您可以看到普通内容,当它被写入XML时会自动转义,在读取时会再次重新转义。
我试过这个:
new XElement("element", "&")
但它逃脱了 &符号,它会生成:<element>&amp;</element>
这清楚地表明了发生了什么。通过传递&
,您获得&amp;
。引擎会看到&
并将其替换为实体。
只需使用new XElement("element", "&")
即可获得所需的结果。
答案 1 :(得分:0)
正如评论和答案new XElement("element", "&")
中所建议的那样,实际上会利用框架正确地逃避&符号。
我遇到的部分问题是,最初我试图将
放入我的xml元素中并没有太大成功。我不知道除非我的XML有一个定义
的DTD,否则我不能使用
。
从那时起,我更新了我的问题,改为使用&
,这又改变了XElement
的行为,因为与空格不同,&
需要在XML中转义,LINQ转换为XML自动执行此操作(按预期方式)。