LINUX.ORG.RU

[java] xpath-поиск в dom-дереве

 


0

0

Есть вполне обычная задача: получить страницу с какого-то левого сайта и найти в ней определенную инфу.

Написал такую программку (выдержка из сорцов):

// htmlData - это String с html-кодом страницы

// пропускаем его через tidy и получаем org.w3c.dom.Document clearedDom
Tidy tidy = new Tidy();
tidy.setConfigurationFromProps(tidyConfigProps);
Document clearedDom = tidy.parseDOM(new StringReader(htmlData), null);

// создаем объект xpath и пытаемся что-нибудь найти
try {
    XPathFactory xpathFactory =  XPathFactory.newInstance();
    XPath xpath = xpathFactory.newXPath();

    Object result = xpath.evaluate("//html", clearedDom, XPathConstants.NODESET);
}
catch (XPathExpressionException xee) {...}

в строчке , где xpath.evaluate(...), программа вылетает с эксепшеном:

Exception in thread «main» java.lang.ArrayIndexOutOfBoundsException: -1 at com.sun.org.apache.xml.internal.dtm.ref.ExpandedNameTable.getType(ExpandedNameTable.java:345) at com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBase.indexNode(DTMDefaultBase.java:319) .. и т.д.

облазил весь гугол. в явадоках нет инфы о том, что может выскакивать ArrayIndexOutOfBoundsException, и почему.

Может, кто-нибудь сталкивался с такой проблемой или знает, в чем дело? Спасибо.

Ответ на: комментарий от thevery

заменил jtidy на nekohtml и все заработало. спасибо!

heisenberg ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.