c# - 带有 HTML 表的 XML 以使用 C# 解析

标签 c# html xml parsing

我正在关注一个返回 XML 的 RSS 提要。 XML 内部是 HTML 表格,作为一个长字符串返回。我正在尝试使用 C# 访问此 HTML 表的元素,以便我可以将这些元素中的每一个用作另一个程序的变量。表格示例:

<table cellpadding="5"><tr><td><strong>Date (GMT)</strong></td><td><strong>Event</strong></td><td><strong>Cons.</strong></td><td><strong>Actual</strong></td><td><strong>Previous</strong></td></tr><tr><td>Jun 7 11:00</td><td>Announcement</td><td>6.250 %</td><td>6.310  %</td><td>6.560  %</td></tr></table>

这里几乎每个类似的线程都建议使用 HtmlAgilityPack,我正在尝试使用它。到目前为止,我已经能够提取出 HTML 表格并将其声明为字符串变量,但我似乎无法提取出表格元素。以下是我的技巧,基于几个用户的建议:

XmlDocument xDoc = new XmlDocument();
xDoc.Load("http://rssfeed.com");
string descr = xDoc.SelectSingleNode("rss/channel/item/description").InnerText;

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml("descr");
// A Print statement here (textBox1.Text = descr;) shows that I'm successfully accessing the HTML table
var table = doc.DocumentNode.Descendants("tr")
.Select(n => n.Elements("td").Select(o => o.InnerText).ToArray());

foreach (var tr in table)
{
textBox1.Text = String.Format("{0} {1} {2}", tr[0], tr[1], tr[2]);
}

非常欢迎任何和所有的建议。

谢谢,

最佳答案

这对我有用,只要 Html 像 Xml 一样工作,它就会为您工作(并且值始终在 TD 内)。内部有单个元素(也称为强元素)的 TD 的值与该元素的值相同。

XElement table = XElement.Parse("<table cellpadding=\"5\"><tr><td><strong>Date (GMT)</strong></td><td><strong>Event</strong></td><td><strong>Cons.</strong></td><td><strong>Actual</strong></td><td><strong>Previous</strong></td></tr><tr><td>Jun 7 11:00</td><td>Announcement</td><td>6.250 %</td><td>6.310  %</td><td>6.560  %</td></tr></table>");
string[] values = table.Descendants("td").Select(td => td.Value).ToArray();

和/或具有值数组的行:

var rows = table.Elements()
    .Select(tr => tr.Elements().Select(td => td.Value).ToArray())
    .ToList();

更新:

foreach (string value in values)
    Console.WriteLine(value);

foreach (string[] row in rows)
    foreach (string value in row)
        Console.WriteLine(value);

关于c# - 带有 HTML 表的 XML 以使用 C# 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10931513/

相关文章:

html - 如何在 CSS 中创建点划线和点划线点线和矩形

php - 文档末尾的额外内容 mysql php xml

c# - C#中的二维数组切片

C# - 图片框中图片的渐变

javascript - 切换单个元素的类

excel - 同步功能区下拉菜单以显示事件工作表

php - 无法解析格式不正确的 XML

c# - React + ASP.Net-Core CORS 问题

c# - 将 TransactionScope TransactionInformation 事务标识符与 sql server 事务 ID 链接起来

html - div的水平滚动条影响垂直对齐