#java #android #htmlcleaner
#java #Android #htmlcleaner
Вопрос:
пытаюсь получить значение элемента «a»и «span «. Использование HTMLCleaner.
<div class="info">
<p class="name">
<a href="http://www.zxdv.com/level/1/film/616/sr/1/">Tron</a>
<span class="year">2001</span>
</p>
</div>
вот код:
TagNode linkElements[] = rootNode.getElementsByName("div", true);
int s=0;
for (int i = 0; linkElements != null amp;amp; i < linkElements.length; i )
{
if (linkElements[i].getAttributes().toString().equals("{class=info}")) {
TagNode linkElements2[] = linkElements[i].getElementsByName("p", true);
for (int i2 = 0; linkElements2 != null amp;amp; i2 < linkElements2.length; i2 )
{
TagNode linkElements3[] = linkElements2[i2].getElementsByName("a", true);
TagNode linkElements4[] = linkElements2[i2].getElementsByName("span", true);
for (int i3 = 0; linkElements3 != null amp;amp; i3 < linkElements3.length; i3 )
{
if (s <= 20) {
String currentlink = linkElements3[i3].getText().toString();
String currentlink2 = linkElements4[i3].getText().toString();
slink[s] = currentlink "n" currentlink2;
s ;
}
}
}
}
}
насколько я понимаю, сначала берется элемент «div», затем его дочерний элемент «p», но когда я использую значения элементов «a» и «span», они возвращаются пустымию
подскажите, пожалуйста, где я допускаю ошибку. Спасибо
Ответ №1:
Сократите объем работы, используя вместо этого XPath
TagNode root = htmlCleaner.clean(url);
// Xpath to 'a'
Object[] foundList = root.evaluateXPath("//div/p[@class='name']/a");
if(foundList == null || foundList.length < 1) {
return;
}
TagNode aNode = (TagNode)foundList[0];
String aNodeTextContent = aNode.getText();
// Xpath to 'span'
foundList = root.evaluateXPath("//div/p[@class='name']/span");
if(foundList == null || foundList.length < 1) {
return;
}
TagNode spanNode = (TagNode)foundList[0];
String spanNodeTextContent = spanNode.getText();