c# - 将 XML 设置为 XElement 的值

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

最佳答案

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

关于c# - 将 XML 设置为 XElement 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34896943/

相关文章:

c# - 回文 - 错误

c# - Unity/Monotouch/C# 中第 3 方库的 JIT 编译方法错误设置委托(delegate)

c# - try-catch block

.net - 如何处理基于泛型集合的已更改类的反序列化向后兼容性?

sql - 在 T-SQL 中解析 XML

Java EE 网络安全

c# - 正则表达式通配符

C# 从 MemoryStream 打开 Office 文档和 Xps 文件

c# - 用于 .NET 的 [Obsolete(string, bool)] 属性

c# - 绑定(bind)手势识别器