将 XML 设置为 XElement 的值

本文关键字:XElement 的值 设置 XML | 更新日期: 2023-09-27 18:31:11

我的方法接收一个XML字符串作为输入,我需要使用XElement将这个XML字符串放入XML信封中:

input:                     <hello>Hello!</hello>
expected result: <envelope><hello>Hello!</hello></envelope>

问题是这段代码:

string xmlHello = "<hello>Hello!</hello>";
XElement xelem = new XElement("envelope", xmlHello);

转义所有<>,因此结果为:

<envelope>&lt;hello&gt;Hello!&lt;/hello&gt;</envelope>

有没有办法禁用XElement构造函数的这种行为,以便能够接受XML作为值?输入字符串可能非常大,所以我想避免解析它。

将 XML 设置为 XElement 的值

正如注释中提到的,这不能直接完成,因为 API 无法知道您的文本实际上是格式良好的 XML,除非您向它传递它知道是 XML 元素的东西。

因此,您需要做的是首先解析您的 XML:

string xmlHello = "<hello>Hello!</hello>";
var hello = XElement.Parse(xmlHello);
var envelope = new XElement("envelope", hello);

结果是:

<envelope>
  <hello>Hello!</hello>
</envelope>