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