将 XElement 转换为字符串

Posted

技术标签:

【中文标题】将 XElement 转换为字符串【英文标题】:Convert XElement to string 【发布时间】:2009-12-21 20:47:47 【问题描述】:

我有一个简单的 XElement 对象

XElement xml = new XElement("XML",
    new XElement ("TOKEN",Session["Token"]),
    new XElement("ALL_INCLUSIVE", "0"),
    new XElement("BEACH", "0"),
    new XElement("DEST_DEP", ddlDest.SelectedValue.ToString()),
    new XElement("FLEX", "0")
);

要将内容转储到字符串的位置。就像Console.Writeline(xml); 一样,但我想要字符串中的内容。我尝试了各种方法。 xml.ToString(); 不会自行返回任何内容。

【问题讨论】:

【参考方案1】:

ToString 肯定可以工作。我用它所有的时间。在这种情况下,它会为您返回什么?一个空字符串?我的猜测是构建您的XElement 时出了点问题。要进行调试,请重写代码以分别添加每个子 XElements,以便您可以单步执行代码并检查每个子代码。然后在执行.ToString 之前,在Locals 窗口中查看扩展为xml 的[xml] 变量。

简而言之,在您使用 ToString() 方法之前,您的问题就已经发生了。

【讨论】:

【参考方案2】:

ToString 有效,但它返回的内容包括 XElement 标记本身。如果您需要 Inner XML 没有根标签(在您的示例中为“”),您可以使用以下扩展方法:

public static class XElementExtension

    public static string InnerXML(this XElement el) 
        var reader = el.CreateReader();
        reader.MoveToContent();
        return reader.ReadInnerXml();
    

然后简单地调用它:xml.InnerXML();

【讨论】:

以上是关于将 XElement 转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何将 XElement 转换为 XDocument

将部分 XML 字符串解析为 XElement 列表

如何使用 XElement.Parse 解析 XML 而无需查看/将实体更改为字符?

将 XElement 转换为 XmlNode

如何将 Dictionary<XElement,XElement> 转换为 xml 文件?

将单个 XElement 转换为对象