package test;
import java.io.IOException;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.*;
import javax.xml.xpath.*;
public class xpath {
public void find(String exp, String html) throws ParserConfigurationException,SAXException,IOException,XPathExpressionException {
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setValidating(false);
domFactory.setNamespaceAware(true);
domFactory.setIgnoringComments(false);
domFactory.setIgnoringElementContentWhitespace(false);
domFactory.setExpandEntityReferences(false);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(html);
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile(exp);
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getNodeValue());
}
}
}
Парсинг HTML на JAVA с помощью XPath
Код:
Приложение выдает ошибку
java.net.MalformedURLException: no protocol:<html code>
в строке Document doc = builder.parse(html);
Вопрос как можно парсить html на JAVA с использованием XPath?
HTML != XML
И потом что у html что у xml есть дерево dom от чего xpath и отталкивается.
Окей, методу parse требуется параметр типа org.xml.sax.InputSource, а вы передаете ему String что ли?
может поможет: