我想使用<element>&</element>生成System.Xml.Linq.XElement。
我试过这样做:new XElement("element", "&"),但是它脱离了符号,它生成:<element>&amp;</element>
我能想到的唯一解决办法是创建一个自定义类,该类继承自XText,重写WriteTo方法,并使用XmlWriter => WriteEntityRef方法。在我看来这有点过头了。还有别的办法吗?
发布于 2018-03-01 10:32:44
正如注释和答案中所建议的那样,new XElement("element", "&")实际上将利用框架来正确地避开符号。
这方面的部分问题是,最初我试图将 放入我的xml元素,但没有取得多大的成功。我不知道,除非我的XML有一个定义 的DTD,否则我不能使用 。
从那时起,我更新了我的问题,改为使用&,这反过来又改变了XElement的行为,因为与空格不同,&需要在XML中转义,LINQ自动做到这一点(正如预期的那样)。
发布于 2018-03-01 09:03:28
您已经在评论中找到了解决方案,只是一些背景:
您必须理解内容原样(__ must ,XML)与其在( XML )中的表示之间的区别。在XML之外,您可以看到普通的内容,当它被写入XML时,它会自动转义,在读取时会再次转义。
我试过这样做:
new XElement("element", "&"),但是它脱离了符号,它生成:<element>&amp;</element>
这清楚地表明了到底发生了什么。通过传入&,您可以得到&amp;。引擎将看到&并将其替换为实体。
只需使用new XElement("element", "&"),就可以得到所需的结果。
https://stackoverflow.com/questions/49035704
复制相似问题