假设我有一个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());
}