【发布时间】:2009-10-09 10:56:19
【问题描述】:
在 .NET 中寻找一种简单的方法来解析 html 文件以取回 <u></u> 标记中的所有值。
例如:<U>105F</U>
文件中可能有许多带有其他标签的标签,但我只需要循环并获取所有值的列表,以便随后处理它们。
寻找一种轻巧的小方法来处理这个问题。
【问题讨论】:
在 .NET 中寻找一种简单的方法来解析 html 文件以取回 <u></u> 标记中的所有值。
例如:<U>105F</U>
文件中可能有许多带有其他标签的标签,但我只需要循环并获取所有值的列表,以便随后处理它们。
寻找一种轻巧的小方法来处理这个问题。
【问题讨论】:
绝对正则表达式:
Dim myPattern As String = "<U>(.*?)</U>"
For Each thisMatch As Match In System.Text.RegularExpressions.Regex.Matches(myPage1HTML, myPattern,RegexOptions.IgnoreCase)
Response.write(thisMatch.ToString)
Next
【讨论】:
XmlNodeList list = doc.SelectNodes("//u");
获取U 节点列表
【讨论】:
Xpath 与 XMLDocument 一起使用的示例
XmlDocument doc = new XmlDocument();
doc.Load("file.html");
XmlNodeList nodeList = doc.DocumentElement.SelectNodes("//u");
foreach (XmlNode title in nodeList) {
Console.WriteLine(title.InnerXml);
}
取自here
【讨论】:
如果 HTML 文档格式正确,XPath 将是我的首选。
请求的代码示例(从未测试过);
var doc = new XPathDocument (@"path\to\file.html");
XPathNavigator navigator = doc.CreateNavigator ();
XPathNodeIterator iterator = navigator.Select ("//U");
while (iterator.MoveNext ())
Console.WriteLine ("U: {0}", iterator.Current.Value);
【讨论】:
我强烈建议不要使用正则表达式来解析 HTML。它们是一个很棒的工具,但它们不适合这项工作。 HTML 太复杂了。只要您遇到一种极端情况(嵌入标签、嵌套标签等),您就会明白我的意思。
【讨论】: