Java HTML XPath селектор - PullRequest
       4

Java HTML XPath селектор

0 голосов
/ 09 апреля 2020

Я пытаюсь найти библиотеку типа C# htmlagilitypack для java, чтобы проанализировать HTML и выбрать элементы, используя XPath.

Я читал о многих библиотеках, но ни одна из них не является автономным селектором XPath для HTML, все библиотеки, которые я обнаружил, требуют анализа HTML, используя их методы, такие как htmlunit.

Если кто-то может подсказать мне простой пример разбора XPath 2.0 или 3.0 и HTML, я был бы признателен.

1 Ответ

1 голос
/ 10 апреля 2020

Java имеет поддержку Xpath . Обычно он используется для разбора XML файлов. Однако он должен работать и для HTML.

HTML образец:

<html lang="en">
<head>
    <title>Index page</title>
</head>
<body>
<div>
    <br/>
    <h1>Hello <span id="my-demo">User!</span></h1>
    <br/>
    <img src="https://s3.amazonaws.com/acloudguru-opsworkslab/ACG_Austin.JPG" alt="photo"/>
</div>
</body>
</html>

Фрагмент кода:

public class HtmlXpathParser {
    private DocumentBuilder builder;
    private XPath path;

    public HtmlXpathParser() throws ParserConfigurationException {
        DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
        builder = dbfactory.newDocumentBuilder();
        XPathFactory xpfactory = XPathFactory.newInstance();
        path = xpfactory.newXPath();
    }

    public Optional<String> parse(String fileName) throws SAXException, IOException, XPathExpressionException {
        File file = new File(fileName);

        Document doc = builder.parse(file);
        String result = path.evaluate("//img/@src", doc);

        return Optional.of(result);
    }

    public static void main(String[] args) throws ParserConfigurationException, XPathExpressionException, SAXException, IOException {
        HtmlXpathParser parser = new HtmlXpathParser();

        Optional<String> srcResult = parser.parse("src/main/resources/index.html");
        srcResult.ifPresent(System.out::println);
    }
}

Выход:

https://s3.amazonaws.com/acloudguru-opsworkslab/ACG_Austin.JPG

Это работает для XPath версии 1. Вы можете использовать что-то вроде xpath2-parser , если вам нужно.

Полезные ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...