Нужна помощь с выражением XPath. Один работает, другой нетJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Нужна помощь с выражением XPath. Один работает, другой нет

Сообщение Anonymous »

Я использую COBRA HTMLParser, но мне не удалось проанализировать один конкретный тег. Вот источник:

Код: Выделить всё

[*]





Content here

Content here

Information by
[url=/associate]Associate[/url]




Для получения нужной информации я могу использовать следующие XPath:

Код: Выделить всё

            XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nodeList = (NodeList) xpath.evaluate("//span[contains(@class, 'body')]", document, XPathConstants.NODESET);
int length = nodeList.getLength();
System.out.println(nodeList.getLength());
for(int i = 0; i < length; i++) {
Element element = (Element) nodeList.item(i);
NodeList n = null;
try {
n = (NodeList) xpath.evaluate("span[contains(@class, 'content')]", element, XPathConstants.NODESET);
String body = n.item(0).getTextContent();
System.out.println("Content: " + body);
} catch (Exception e) {};

try {

String date = (String) xpath.evaluate("span[contains(@class, 'meta entry')]/a/span/@data", element, XPathConstants.STRING);
System.out.println("DATA: " + date);

String source = (String) xpath.evaluate("//span[contains(@class, 'meta entry')]/span", element, XPathConstants.STRING);
System.out.println("DATA: " + source);

} catch (Exception e) {};

//This does not work at all! I've tried every combination and still can't get it to run
try {
String info = (String) xpath.evaluate("//span[@class='shared-content']/a/@data", element, XPathConstants.STRING);
System.out.println("INFO: " + info);
} catch (Exception e) {};

}
Последнее выражение не работает, какую бы комбинацию я ни пробовал. Я тоже пробовал следующее, но это не помогает,

Код: Выделить всё

        String info = (String) xpath.evaluate("//span[contains(@class, 'shared-content')]/a/@data", element, XPathConstants.STRING);
String info = (String) xpath.evaluate("//span[contains(@class, 'meta entry info')]/span/a/@data", element, XPathConstants.STRING);
Есть предложения?

РЕДАКТИРОВАНИЕ: было несколько предположений о том, что XML является незаконным (что, честно говоря, Я сам не уверен, почему это незаконно, потому что до сих пор я видел это почти везде), но у меня нет контроля над XML (по крайней мере, до понедельника, пока не вернутся другие мои приятели). Я пытаюсь увидеть возможность написания коллажа, включающего эту информацию. Есть ли способ отключить проверку или что-то в этом роде?

Вот проанализированный XML:

Код: Выделить всё

       

TextContent
TextContent


Полагаю, документ анализируется неправильно.

Подробнее здесь: https://stackoverflow.com/questions/180 ... her-doesnt
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»