【发布时间】:2013-09-22 16:39:45
【问题描述】:
所以我正在学习如何使用 XPath 和 HtmlCleaner 来解析 HTML,但我遇到了一个问题。这是代码:
public class ScheudeleWithDesign extends Activity {
static final String urlToParse = "https://www.easistent.com/urniki/263/razredi/18221";
static final String xpathTableContents = "//div[@id='text11']";
TextView tw1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scheudele_with_design);
tw1 = (TextView) findViewById(R.id.urnikText);
String value = "";
value = new getScheudele().execute().toString();
tw1.setText(value);
}//End of onCreate
private class getScheudele extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
String stats = null;
//cleaner properties
HtmlCleaner cleaner = new HtmlCleaner();
CleanerProperties props = cleaner.getProperties();
props.setAllowHtmlInsideAttributes(false);
props.setAllowMultiWordAttributes(false);
props.setRecognizeUnicodeChars(true);
props.setOmitComments(true);
URL url;
try {
url = new URL(urlToParse);
TagNode root = cleaner.clean(url);
Object[] node = root.evaluateXPath(xpathTableContents);
//Vzemi podatke če najdeš element
if (node.length > 0) {
TagNode resultNode = (TagNode)node[10];
stats = resultNode.getText().toString();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XPatherException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return stats;
}
}
所以我显然是在尝试解析某些数据并将其设置为 textview。这不起作用,结果完全错误:
com.whizzapps.stpsurniki.ScheudeleWithDesign$getScheudele@421a7d90
我的猜测是问题出在这里的 XPath 中:
static final String xpathTableContents = "//div[@id='text11']";
我以前从未使用过 XPath,所以我几乎可以肯定我把那部分搞砸了。 This is the site 顺便说一下,我试图从中解析数据。这段代码应该只为初学者获取一个表格元素,一旦我知道该怎么做,我将解析整个表格。
【问题讨论】:
-
"//div[@id='text11']"XPath 正在尝试选择任何div元素,其id属性等于text11,但是在引用的 HTML 页面中没有这样的div元素。 (有许多 div 元素的类属性设置为text11。)如果您提供希望从链接的 HTML 页面中选择的数据的具体示例,我们可以帮助您制作 XPath。 -
@kjhughes 我仍在努力学习 XPath,但在学习我一无所知的新东西时总是遇到问题。你能告诉我一个关于如何选择任何表格内容的例子吗?只需向我展示您想要的任何表格内容的 XPath 代码,以便我以某种方式“获取结构”。非常感谢,谢谢!
标签: java android xpath htmlcleaner