Java 使用XPath导致问题

Java 使用XPath导致问题,java,android,xpath,htmlcleaner,Java,Android,Xpath,Htmlcleaner,所以我正在学习如何使用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']

所以我正在学习如何使用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;
    }

}
我以前从未使用过XPath,所以我几乎可以肯定我把那个部分搞砸了。顺便说一下,我正试图从中解析数据。这段代码应该只获得一个表元素作为初学者,一旦我知道如何做,我将解析整个表

我猜问题出在这里的XPath中:

static final String xpathTableContents = "//div[@id='text11']";
static final String xpathTableContents = "//div[@id='text11']";
正如我在评论中提到的,
//div[@id='text11']
XPath试图选择任何
div
元素,其
id
属性等于
text11
,但是在引用的HTML页面中没有这样的div元素

你能给我举一个如何选择表格的例子吗 内容?只需为您想要的任何表内容显示XPath代码 我以某种方式“了解结构”

使用,选择包含“2.ura”的div,例如:

//*[@id="seznam_ur_teden"]/table/tbody/tr[3]/td[1]/div[1]
要仅选择此处的文本

//*[@id="seznam_ur_teden"]/table/tbody/tr[3]/td[1]/div[1]/text()
要选择整个祖先表,请执行以下操作:

//*[@id="seznam_ur_teden"]/table

“//div[@id='text11']”
XPath正在尝试选择任何
div
元素,其
id
属性等于
text11
,但是在引用的HTML页面中没有此类
div
元素。(有许多div元素的class属性设置为
text11
)如果您提供了希望从链接的HTML页面中选择的数据的具体示例,我们可以帮助您创建XPath。@kjhughes我仍在尝试学习XPath,但在学习我一无所知的新内容时总是遇到问题。你能给我举一个如何选择表格内容的例子吗?只需为您想要的任何表内容显示一个XPath代码,以便我以某种方式“获取结构”。非常感谢,谢谢!谢谢你的回答,很抱歉我的回复太晚了,因为某种原因我没有在我的通知中看到它。我尝试了所有这3种代码,但都不起作用。第一个错误是因为“塞兹纳姆乌尔特登”因为“不能在里面”。因此,我更改了“with”,但仍然不起作用,HTMLCleaner只部分实现了XPath。我提供的XPath是正确的,并在Chrome中进行了测试。也许其他人在HTMLCleaner的部分XPath实现中遇到了困难,但我的建议是使用一种工具,您不必怀疑XPath或该工具的实现是否存在问题谢谢,我接受这个建议:)我只需要用htmlcleaner清理html,然后用jsoup解析它,如果行得通的话。