从XElement获取innerText

时间:2011-03-19 22:02:50

标签: c# asp.net vb.net

嘿伙计们,我有一个我需要解析的XML文件,但只针对文本,而不是HTML。以下是节点的示例:

<highlights><![CDATA[<ul style="color:#000000;font-size:small;font-family:verdana,geneva,sans-serif"><li>Classy &amp; elegant purse hooks</li><li>Choose from various styles<br></li><li>Stable and reliable</li><li>Makes a great gift!  </li></ul>  ]]></highlights> 

正如您所看到的,CDATA中包含HTML代码,因此当我执行element.Value时,我也会获得标签。有没有简单的方法来获取文本?

谢谢!

2 个答案:

答案 0 :(得分:2)

由于CDATA中的数据不是有效的XML,您可以使用HtmlAgilityPack来解析结果:

XDocument xdoc = XDocument.Load("test.xml");
var html = xdoc.Descendants("highlights").First().Value;

HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
var result = htmlDoc.DocumentNode.InnerText;

输出:

  优雅&amp;优雅的钱包钩选择   从各种风格的表格和   可靠的礼物!

答案 1 :(得分:0)

<literal id="continer"  runat="server"/>

continer.text=@"<highlights><![CDATA[<ul style="color:#000000;font-size:small;font-family:verdana,geneva,sans-serif"><li>Classy &amp; elegant purse hooks</li><li>Choose from various styles<br></li><li>Stable and reliable</li><li>Makes a great gift!  </li></ul>  ]]></highlights> ";

<div id="continer" runat="server"/>

continer.innerHtml==@"<highlights><![CDATA[<ul style="color:#000000;font-size:small;font-family:verdana,geneva,sans-serif"><li>Classy &amp; elegant purse hooks</li><li>Choose from various styles<br></li><li>Stable and reliable</li><li>Makes a great gift!  </li></ul>  ]]></highlights> ";