选择节点LINQ XML的HTML内容

时间:2013-07-04 22:39:56

标签: c# xml linq linq-to-xml

我有这样的XML

  <component>
        <section>
          <title>Reporting Parameters</title>
          <text>
            <list>
              <item>Reporting period: January 1st, 2012
            </list>
          </text>
       </section>
   </component>

我想选择包含等元素的节点的全部内容但是它只选择纯文本“报告期:2012年1月1日”,原因是它可能包含我需要存储在数据库中的一些HTML标记,我是使用以下查询

  var components = (from c in cdafile.Root.Elements(ns + "component")
                  select new{
                      name = (string)c.Element(ns + "section").Element(ns + "title").Value,
                      text = (string)c.Element(ns + "section").Element(ns + "text"),
                  });

1 个答案:

答案 0 :(得分:1)

XElementto return concatenated, inner text of nodes)重载显式强制转换操作符,使用.ToString()获取节点内容:

text = c.Element(ns + "section").Element(ns + "text").ToString()

并且仅为儿童标记

text = string.Join(Environment.NewLine, c
    .Element(ns + "section").Element(ns + "text")
    .Elements().Select(e => e.ToString())
)