Java: как разобрать строку html для инструмента XML? - PullRequest
1 голос
/ 02 декабря 2010

Какая библиотека позволила бы мне оценить xpath для строки html?

Я пытался использовать пакет javax, но это не помогло:

String docroot = "<div><i>items <b>sold</b></i></div>";
XPath xxpath = XPathFactory.newInstance().newXPath();
InputSource docroot = new InputSource(new StringReader(subelements)); 
String result = (String) xxpath.evaluate("//b", docroot, XPathConstants.STRING);

Ответы [ 3 ]

3 голосов
/ 02 декабря 2010

Попробуйте выполнить следующее, в вашем примере кода были некоторые ошибки:

import java.io.StringReader;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.xml.sax.InputSource;

public class Demo {

    public static void main(String[] args) throws Exception {
        String docroot = "<div><i>items <b>sold</b></i></div>";
        XPath xxpath = XPathFactory.newInstance().newXPath();
        InputSource inputSource = new InputSource(new StringReader(docroot)); 
        String result = (String) xxpath.evaluate("//b", inputSource, XPathConstants.STRING);
        System.out.println(result);
    }

}
2 голосов
/ 02 декабря 2010

Требуется библиотека синтаксического анализа Java HTML, которая может создавать допустимый объект XML-документа. Основываясь на этом ненаучном сравнении библиотек , кажется, HTML Cleaner справится с задачей.

С сайта HTML Cleaner:

Хотя основным мотивом было подготовить обычный HTML для XML обработка с XPath, XQuery и XSLT, структурированные данные, созданные HtmlCleaner может потребляться и обрабатываются в меню другими способами.

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

2 голосов
/ 02 декабря 2010

Вам нужен синтаксический анализатор, который достаточно мягок, чтобы анализировать HTML как XML, и они встречаются редко.Я верю, что TagSoup - http://java -source.net / open-source / html-parsers / tagsoup - может это сделать, но я давно на это не смотрел.

(подробнее здесь: http://java -source.net / open-source / html-parsers / tagsoup )

Есть ли причина, по которой вы не можете просто предоставить фрагмент XHTML?

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