【问题标题】:Return HTML tag value in Java在 Java 中返回 HTML 标记值
【发布时间】:2011-08-23 11:54:58
【问题描述】:

我正在尝试编写将在 Java 中返回 HTML 标记中的值的 Java 代码。以下是我一直在尝试的方法..有人可以帮我吗

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.seoreport.exceptions.DataNotFoundException;

public class utils {

    public String tagValue(String inHTML, String tag) throws DataNotFoundException
    {
        String value = null;

        String searchFor = "/<" + tag + ">(.*?)<\\/" + tag + "\\>/";

        Pattern pattern = Pattern.compile(searchFor);
        Matcher matcher = pattern.matcher(inHTML);

        return value;

    }

}

【问题讨论】:

  • 这个问题可能有用。 stackoverflow.com/questions/1732348/…
  • 您是否有理由为此需要使用正则表达式,而不是使用像 jsoup.org 这样的 HTML 解析器?正则表达式不太适合这项任务。
  • @derekerdmann:这就是答案;)
  • RegExp 对于 HTML 解析器来说是一个非常非常糟糕的选择。
  • 忽略这些人:他们正在谈论解析一个包含未知内容的整个 HTML 文件,这可以做所有可能的古怪事情,虽然非常棘手,但几乎从不需要。对于预制 HTML sn-ps,正则表达式是最佳选择:这就是我们在文本编辑器中使用搜索和替换的原因。请参阅this answer on matching HTML with regexes 以获得更完整的方法,但更简单的解决方案通常完全足够。无法告诉您这里实际需要什么。

标签: java html regex


【解决方案1】:

为什么不尝试使用 XML 解析器并使用 xpath 访问块?你可以这样做:

// Parse the XML file and build the Document object in RAM
Document doc = docBuilder.parse(new File(fileName));

// Normalise text representation.
// Collapses adjacent text nodes into one node.
doc.getDocumentElement().normalize();

// get tag
xpath = ".//*/"+yourTag;
NodeList content= XPathAPI.selectNodeList(doc, xpath);

这样做你将拥有内容变量中的所有内容。

您可以将其用作文本:

content.tostring();

【讨论】:

  • 您假设该文档是一个 XHTML 文档。这不适用于普通的 HTML。
  • 我承认我没有在 Java 的标准 HTML 上尝试过。我使用 minidom 在 python 中完成了它,并且对我来说工作得很好。试一试并观察行为。
  • 我需要让这个工作我也将不得不搜索其他东西......这就是为什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多