如何在 XML 文档中提取 HTML 的文本版本



假设我有一个XML文档,看起来像(基本上表示HTML报告(:

<html>
 <head>...</head>
 <body>
   <div>
   <table>
     <tr>
       <td>Stuff</td>
     </tr>
     <tr>
       <td>More stuff<br /><br />More stuff on another line and some whitespace...  </td>
     </tr>
     <tr>
       <td>  Some leading whitespace before this stuff<br />Stuff</td>
     </tr>
   </table>
   </div>
 </body>
</html>

我想(使用 C#(将此文档转换为一个简单的文本字符串,如下所示:

Stuff
More stuff
More stuff on another line and some whitespace...
  Some leading whitespace before this stuff
Stuff

它应该足够智能,可以将表格行转换为新行,并在单元格中添加了任何内联 br 标签的地方插入新行。它还应保持表格单元格中的任何空格不变。我尝试使用 XmlDocument 类并在正文节点上使用 InnerText 方法,但它似乎没有创建我正在寻找的输出(换行符和空格不完整(。有没有简单的方法可以做到这一点?我知道一种方法是将 HTML 提取为一个字符串并对其执行多个正则表达式以处理换行符和空格。谢谢!

请尝试以下操作:

var doc = XElement.Load("test.xml");
var sb = new StringBuilder();
foreach (var text in doc.DescendantNodes().Where(node => node.NodeType == XmlNodeType.Text))
{
    sb.AppendLine(((XText)text).Value);
}

更简洁:

foreach (var text in doc.DescendantNodes().OfType<XText>())
{
    sb.AppendLine(text.ToString());
}

最新更新