使用linq获取嵌入在xml中的html标签

时间:2009-08-07 09:37:52

标签: c# html xml linq

我有一个基本的xml文件,看起来像这样。

    <root>
     <item>
        <title><p>some title</p></title>
     </item>
    ...
    </root>

我想要的是使用linq获取整个标题字符串,包括xml的html标记,并将其显示在转发器中。 我可以毫无问题地获得标题,但<p>标签正在被删除。

如果我使用
title = item.Element("title").ToString(),它以某种方式工作,但我也得到了所有的xml标记 - 这意味着标题不会以html显示。

我已尝试使用"<""&lt;"进行编码,但这样做会使xml难以阅读。

除了使用CDATA和编码之外,还有什么可能的解决方案?

干杯 特里

3 个答案:

答案 0 :(得分:1)

从title元素创建一个reader并阅读InnerXml:

    static void Main(string[] args)
    {
        string xml = "<root><item><title><p>some title</p></title></item></root>";

        XDocument xdoc = XDocument.Parse(xml);
        XElement te = xdoc.Descendants("title").First();
        using (XmlReader reader = te.CreateReader())
        {
            if (reader.Read())
                title = reader.ReadInnerXml();
        }
    }

答案 1 :(得分:0)

有关如何获取XElement的“InnerXml”的一些想法,请参阅Best way to get InnerXml of an XElement?

答案 2 :(得分:0)

XElement x = XElement.Parse(你的xml);

var y = x.Descendants(“title”)。Descendants();

然后迭代y以获取标题元素的内容列表。

BTW,LINQPad(http://www.linqpad.net)是一个免费的免费工具,用于试用LINQ-XML。