Java 错误的XPath或错误的JSoup?

Java 错误的XPath或错误的JSoup?,java,xpath,syntax,html-parsing,jsoup,Java,Xpath,Syntax,Html Parsing,Jsoup,请注意:尽管这个问题直接涉及一个名为的Java HTML解析库,但我真的相信它的核心是一个XPath问题(以及解决方案) 我们有一个提供HTML页面的内部web应用程序,fizz.HTML。在这个页面上有一个重要的ID号,另一个进程需要能够在它运行的任何时候获取该ID号。该ID周期性/可预测地改变;因此,有一天,HTML页面中的ID可能是“394959”。另一天可能是“248483”,等等。出于本问题上下文之外的原因,此HTML页面是获取ID的唯一方法 因此,我想使用JSoup点击HTML页面的

请注意:尽管这个问题直接涉及一个名为的Java HTML解析库,但我真的相信它的核心是一个XPath问题(以及解决方案)

我们有一个提供HTML页面的内部web应用程序,
fizz.HTML
。在这个页面上有一个重要的ID号,另一个进程需要能够在它运行的任何时候获取该ID号。该ID周期性/可预测地改变;因此,有一天,HTML页面中的ID可能是“394959”。另一天可能是“248483”,等等。出于本问题上下文之外的原因,此HTML页面是获取ID的唯一方法

因此,我想使用JSoup点击HTML页面的URL,并使用Xpath选择器解析ID

HTML页面(JSFIDLE):

这里讨论的ID可以在JSFIDLE的第238行找到:

<a href="/chain/admin/config/editRepository.action?planKey=AB-CSD&amp;repositoryId=28049450">
当我运行此命令时,我得到:

Exception in thread "main" org.jsoup.select.Selector$SelectorParseException: Could not parse query '//*[@id="panel-editor-list"]/ul': unexpected token at '//*[@id="panel-editor-list"]/ul'
    at org.jsoup.select.QueryParser.findElements(QueryParser.java:196)
    at org.jsoup.select.QueryParser.parse(QueryParser.java:53)
    at org.jsoup.select.QueryParser.parse(QueryParser.java:39)
    at org.jsoup.select.Selector.<init>(Selector.java:80)
    at org.jsoup.select.Selector.select(Selector.java:93)
    at org.jsoup.nodes.Element.select(Element.java:252)
    at org.jsoup.nodes.Element$select.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at com.me.myorg.parser.ClientParser.executeIntegration(ClientParser.groovy:98)
    at com.me.myorg.parser.ClientParser$executeIntegration.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
    at com.me.myorg.parser.ClientParser.main(ClientParser.groovy:143)
线程“main”org.jsoup.select.Selector$SelectorParseException中的异常:无法分析查询“/*[@id=“面板编辑器列表”]/ul”:位于“//*[@id=“面板编辑器列表”]/ul”的意外标记 位于org.jsoup.select.QueryParser.findElements(QueryParser.java:196) 位于org.jsoup.select.QueryParser.parse(QueryParser.java:53) 位于org.jsoup.select.QueryParser.parse(QueryParser.java:39) 在org.jsoup.select.Selector上。(Selector.java:80) 位于org.jsoup.select.Selector.select(Selector.java:93) 位于org.jsoup.nodes.Element.select(Element.java:252) 位于org.jsoup.nodes.Element$select.call(未知源) 位于org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) 位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) 位于com.me.myorg.parser.ClientParser.executeIntegration(ClientParser.groovy:98) 位于com.me.myorg.parser.ClientParser$executeIntegration.call(未知源) 位于org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) 位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120) 位于com.me.myorg.parser.ClientParser.main(ClientParser.groovy:143)
所以我问:这是一个糟糕的XPath(很可能),还是我使用JSoupAPI的方式有问题?

Jousp不支持XPath。select语句只接受CSS选择器

Exception in thread "main" org.jsoup.select.Selector$SelectorParseException: Could not parse query '//*[@id="panel-editor-list"]/ul': unexpected token at '//*[@id="panel-editor-list"]/ul'
    at org.jsoup.select.QueryParser.findElements(QueryParser.java:196)
    at org.jsoup.select.QueryParser.parse(QueryParser.java:53)
    at org.jsoup.select.QueryParser.parse(QueryParser.java:39)
    at org.jsoup.select.Selector.<init>(Selector.java:80)
    at org.jsoup.select.Selector.select(Selector.java:93)
    at org.jsoup.nodes.Element.select(Element.java:252)
    at org.jsoup.nodes.Element$select.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at com.me.myorg.parser.ClientParser.executeIntegration(ClientParser.groovy:98)
    at com.me.myorg.parser.ClientParser$executeIntegration.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
    at com.me.myorg.parser.ClientParser.main(ClientParser.groovy:143)