Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JDom2解析HTML时,引号导致IllegalNameException_Java_Xml_Parsing_Jdom - Fatal编程技术网

Java 使用JDom2解析HTML时,引号导致IllegalNameException

Java 使用JDom2解析HTML时,引号导致IllegalNameException,java,xml,parsing,jdom,Java,Xml,Parsing,Jdom,大家晚上好 我试图用JDOM2解析Java中的HTML页面,以便从中访问一些信息 我的代码如下所示:(只是为这个代码块添加了包,我的真实源代码中没有这些包) 这适用于所有情况,除了一些特殊情况:当站点在元素中包含引号时。以下是我的意思的一个例子: 因此,在完成这一美妙的标记后,我得到了以下错误跟踪: SEVERE:org.jdom2.IllegalNameException:名称“literatur”对于JDOM/XML属性不合法:XML名称“literatur”不能包含字符“”。 所以,现在

大家晚上好

我试图用JDOM2解析Java中的HTML页面,以便从中访问一些信息

我的代码如下所示:(只是为这个代码块添加了包,我的真实源代码中没有这些包)

这适用于所有情况,除了一些特殊情况:当站点在元素中包含引号时。以下是我的意思的一个例子:

因此,在完成这一美妙的标记后,我得到了以下错误跟踪:

SEVERE:org.jdom2.IllegalNameException:名称“literatur”对于JDOM/XML属性不合法:XML名称“literatur”不能包含字符“”。

所以,现在我的问题是:我可以选择什么来处理这个错误?NekoHTML中是否有一个功能可以用于此(使用“setFeature()”),或者JDOM中的某个功能可以用于此

如果否:是否有其他库适合抓取可以在标签中使用引号的网站


谢谢您的时间!

好的,我解决了以下问题:

因为对NekoHTML没有任何依赖性,所以我切换到作为解析器来完成本例中的工作


问题已回答。

HTML无效。title属性的值有问题。Henry说了什么。您试图提供给JDOM的DOM无效。在“真实”XML中,它基本上有如下内容:
literatur“=”
,这显然是不对的。它试图告诉JDOM属性的名称(不是值)是
literatur“
好吧,我假设这是不对的,但这就是我刮取它时的站点。没有办法改变它吗?可能不浏览整个页面?或者可能只使用另一个解析器?
//Here goes the reading of the site into my String "string" (using NekoHTML)

org.xml.sax.InputSource is = new InputSource();
is.setCharacterStream(new StringReader(string));

org.cyberneko.html.parsers.DOMParser parser = new DOMParser();
parser.parse(is);

org.jdom2.input.DOMBuilder builder = new DOMBuilder();
org.jdom2.Document doc = builder.build(parser.getDocument());