You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用System.Xml.Linq.XElement生成<element>&amp;</element>?

解决XElement生成<element>&amp;</element>的简洁方法

你遇到的问题其实是对XML实体转义的理解有点小偏差,完全不用自定义XText类这么麻烦,有几个更简单的办法:

方法一:直接传入字符&(最推荐)

XML规范里,字符&必须以&amp;的形式呈现,而XElement会自动帮你处理转义逻辑。所以如果你想要最终生成<element>&amp;</element>,只需要直接把字符&作为元素内容传入即可:

var element = new XElement("element", "&");
Console.WriteLine(element.ToString());
// 输出:<element>&amp;</element>

你之前传入"&amp;"导致输出&amp;amp;,是因为XElement把你传入的字符串里的&再次转义了——它会把任何特殊字符都转换成对应的XML实体。

方法二:用XElement.Parse创建元素

如果你更习惯直接写XML片段,也可以用Parse方法直接构造元素:

var element = XElement.Parse("<element>&amp;</element>");
Console.WriteLine(element.ToString());
// 同样输出:<element>&amp;</element>

这里Parse会把&amp;解析成字符&,后续输出时又自动转义回&amp;,结果和方法一完全一致。

方法三:手动用XmlWriter写入(适合特殊场景)

如果你的场景需要更精细地控制XML输出(比如要写入自定义实体),可以直接用XmlWriter来写,不需要依赖XElement的自动转义:

using (var writer = XmlWriter.Create(Console.Out, new XmlWriterSettings { Indent = true }))
{
    writer.WriteStartElement("element");
    writer.WriteEntityRef("amp"); // 直接写入实体引用
    writer.WriteEndElement();
}
// 输出:<element>&amp;</element>

这种方式适合你需要直接控制实体输出的特殊情况,但日常场景下方法一就足够满足需求了。

内容的提问来源于stack exchange,提问作者Leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:41:05