如何使用 HTMLcleaner 获取元素的值

TT_*_*_KZ 3 java android htmlcleaner

尝试获取元素“a”和“span”的值。使用 HTMLCleaner。

\n\n
<div class="info">\n  <p class="name">\n    <a href="http://www.zxdv.com/level/1/film/616/sr/1/">Tron</a> \n    <span class="year">2001</span>\n  </p>\n</div>\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是代码:

\n\n
TagNode linkElements[] = rootNode.getElementsByName("div", true);\nint s=0;\nfor (int i = 0; linkElements != null && i < linkElements.length; i++)\n{\n    if (linkElements[i].getAttributes().toString().equals("{class=info}")) {\n        TagNode linkElements2[] = linkElements[i].getElementsByName("p", true);\n        for (int i2 = 0; linkElements2 != null && i2 < linkElements2.length; i2++)\n        {\n            TagNode linkElements3[] = linkElements2[i2].getElementsByName("a", true);\n            TagNode linkElements4[] = linkElements2[i2].getElementsByName("span", true);\n            for (int i3 = 0; linkElements3 != null && i3 < linkElements3.length; i3++)\n            {\n                if (s <= 20) {\n                    String currentlink = linkElements3[i3].getText().toString();\n                    String currentlink2 = linkElements4[i3].getText().toString();\n                    slink[s] = currentlink+"\\n"+currentlink2;\n                    s++;\n                }   \n            }   \n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

据我了解,首先采用“div”元素,然后是他的子元素“p”,但是当我计算“a”和“span”元素值时,返回空\xd1\x8e\n请提示我在哪里出错。谢谢

\n

Pet*_*ton 5

使用 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();
Run Code Online (Sandbox Code Playgroud)