【问题标题】:Simple parsing of html file for <U></U> values in .net?.net中<U></U>值的html文件的简单解析?
【发布时间】:2009-10-09 10:56:19
【问题描述】:

在 .NET 中寻找一种简单的方法来解析 html 文件以取回 &lt;u&gt;&lt;/u&gt; 标记中的所有值。

例如:&lt;U&gt;105F&lt;/U&gt;

文件中可能有许多带有其他标签的标签,但我只需要循环并获取所有值的列表,以便随后处理它们。

寻找一种轻巧的小方法来处理这个问题。

【问题讨论】:

    标签: .net html parsing


    【解决方案1】:

    绝对正则表达式:

    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
    

    【讨论】:

    【解决方案2】:
    XmlNodeList list = doc.SelectNodes("//u");
    

    获取U 节点列表

    【讨论】:

      【解决方案3】:

      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,这将不起作用。
      • 是的,但他在下面的评论中专门写了 xhtml 格式正确
      【解决方案4】:

      如果 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);
      

      【讨论】:

      • 格式良好,包含所有 matchign 标签和非常基本的 html。您有为此使用的 usign XPath 示例吗?
      【解决方案5】:

      Html Agility Pack.

      强烈建议不要使用正则表达式来解析 HTML。它们是一个很棒的工具,但它们不适合这项工作。 HTML 太复杂了。只要您遇到一种极端情况(嵌入标签、嵌套标签等),您就会明白我的意思。

      编辑:另见Coding Horror: Parsing: Beyond Regex

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-07
        相关资源
        最近更新 更多