C# &;amp;在XElement中

C# &;amp;在XElement中,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,我想生成&使用System.Xml.Linq.XElement 我试过这样做:new-XElement(“element”,“element”,“amp;”),但它逃逸了符号,并生成:&;amp 我能想到的唯一解决方法是创建一个从XText继承的自定义类,重写WriteTo方法,并使用XmlWriter=>WriteEntityRef方法。在我看来,这有点过分了。还有其他方法吗?您已经在评论中找到了解决方案,只是一些背景: 您必须理解内容的原样(在XML之外)和它在XML内部的表示之

我想生成
&使用
System.Xml.Linq.XElement

我试过这样做:
new-XElement(“element”,“element”,“amp;”)
,但它逃逸了符号,并生成:
&;amp


我能想到的唯一解决方法是创建一个从
XText
继承的自定义类,重写
WriteTo
方法,并使用
XmlWriter
=>
WriteEntityRef
方法。在我看来,这有点过分了。还有其他方法吗?

您已经在评论中找到了解决方案,只是一些背景:

您必须理解内容的原样(在XML之外)和它在XML内部的表示之间的区别。在XML之外,您可以看到普通内容,当它被写入XML时,它会自动转义,在读取时会再次转义

我试过这样做:
newxelement(“元素”,“和”)
,但它逃避了 它生成:
&;amp

这清楚地表明了发生了什么。通过传入
&您将获得
&;amp。引擎会看到
&
,并将其替换为实体


只需使用
new-XElement(“元素”,“&”)
即可获得所需的结果

正如评论和回答中所建议的那样,
new-XElement(“元素”,“和”)
实际上将利用框架正确地避开符号

我遇到的部分问题是,最初我试图将
放在xml元素中,但没有成功。我不知道,除非我的XML有一个定义
的DTD,否则我不能使用


从那时起,我更新了我的问题,使用
&XElement
的行为,因为与空格不同,
&
需要在XML中转义,而LINQ to XML会自动执行此操作(如预期的那样)

那么“\u00a0”呢?另外,您是否正在尝试将XML转换为HTML?这是行不通的,HTML不是XML,只要使用
新元素(“元素”,“和”)
。请注意,您的标题与您的身体不匹配。您正在尝试创建
&,而不是
&nsbp
(基本上,让LINQ-to-XML为您转义-从逻辑上讲,您正试图创建一个包含单个符号和文本的元素。)@maccettura
XHTML
是XML标记语言家族的一部分,换句话说是
XML
的应用程序。
实体是U00A0,即不间断空格。我很确定,当你越过这个角色时,会有某种逃避。是的,一个实体必须事先知道。有没有办法防止Linq到Xml tp转义&?我正在创建一个文档,其中需要将输出写为“和”,而不是“和”。如果我没有得到“&”字符串…@Carlos H-我想你可以用
XRaw
来代替。。。这可能有助于: