将XML设置为XElement的值

时间:2016-01-20 10:03:48

标签: c# .net xml linq-to-xml xelement

我的方法接收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作为值?输入字符串可能非常大,所以我想避免解析它。

1 个答案:

答案 0 :(得分:3)

正如评论中所提到的,这不可能直接完成,因为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>