【问题标题】:Reading text between 2 html tags in xml file [duplicate]读取xml文件中2个html标签之间的文本[重复]
【发布时间】:2016-11-21 19:55:49
【问题描述】:

我正在尝试读取 xml 文件中 2 个 html 标记之间的文本。它适用于小内容,但当内容很大时,它会失败并返回空。高层次的问题可能是什么

  Regex regex = new Regex("<strong>(.*)</strong>");
      var v = regex.Match("Unneeded text <strong>Needed Text</strong> More unneeded text");
      string s = v.Groups[1].ToString();

【问题讨论】:

  • 我添加了正则表达式标签,因为这就是您正在使用的标签,但正如标签描述所说“如果有解析器,请改用它。”
  • “当内容很大时” 不是正确的minimal reproducible example。要么创建一个重现问题的示例(提示:&lt;/strong&gt; 很可能不存在),要么只使用适当的 HTML 解析器。

标签: c# regex


【解决方案1】:

我尝试了下面的代码,它成功了。感谢您的时间和建议

        var filePath = @"D:\myfile.xml";
        var fileData = File.ReadAllText(filePath);
        XDocument doc = XDocument.Parse(fileData);

        foreach (XElement hashElement in doc.Descendants("mytagname"))
        {
            string hashValue = (string)hashElement;
        }

【讨论】:

    【解决方案2】:

    请尝试以下操作。我怀疑标签之间有大文本。我还添加了.*?,以防您的数据中有多对标签。

    Regex regex = new Regex("<strong>(.*?)</strong>", RegexOptions.Singleline);
    

    Singleline 指定单行模式。更改点的含义 (.) 所以它匹配每个字符(而不是每个字符,除了 \n)。 RegexOptions Enumeration

    【讨论】:

      猜你喜欢
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 2011-08-07
      • 1970-01-01
      相关资源
      最近更新 更多