为了账号安全,请及时绑定邮箱和手机立即绑定

获得XElement的InnerXml的最佳方法是什么?

获得XElement的InnerXml的最佳方法是什么?

沧海一幻觉 2019-09-20 16:47:40
body在下面的代码中获取混合元素内容的最佳方法是什么?该元素可能包含XHTML或文本,但我只想要其字符串形式的内容。该XmlElement类型具有InnerXml我正在追求的属性。编写的代码几乎可以实现我想要的功能,但包含了我不想要的周围的<body>... </body>元素。XDocument doc = XDocument.Load(new StreamReader(s));var templates = from t in doc.Descendants("template")                where t.Attribute("name").Value == templateName                select new                {                   Subject = t.Element("subject").Value,                   Body = t.Element("body").ToString()                };
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

我认为这是一个更好的方法(在VB中,不应该难以翻译):


给定XElement x:


Dim xReader = x.CreateReader

xReader.MoveToContent

xReader.ReadInnerXml


查看完整回答
反对 回复 2019-09-20
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

如何在XElement上使用这个“扩展”方法?为我工作!


public static string InnerXml(this XElement element)

{

    StringBuilder innerXml = new StringBuilder();


    foreach (XNode node in element.Nodes())

    {

        // append node's xml string to innerXml

        innerXml.Append(node.ToString());

    }


    return innerXml.ToString();

}

或者使用一点Linq


public static string InnerXml(this XElement element)

{

    StringBuilder innerXml = new StringBuilder();

    doc.Nodes().ToList().ForEach( node => innerXml.Append(node.ToString()));


    return innerXml.ToString();

}

注意:上面的代码必须使用element.Nodes()而不是element.Elements()。记住两者之间的区别非常重要。element.Nodes()给你一些像XText,XAttribute等等,但XElement只有一个元素。


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 522 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信