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

时间:2014-07-10 14:19:23

标签: java xml parsing jdom

大家晚安!

我正在尝试使用JDOM2解析Java中的HTML页面,以便从中访问一些信息。

我的代码如下所示:(刚刚添加了此代码块的软件包,请不要在我的实际源代码中添加它们)

//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());

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

<a href="LINK" title="Der "realismo mágico" und die Phantastische Literatur">Der "realismo mágico" und die Phantastische...</a>

因此,在那个精彩的标签后,我得到以下错误跟踪:

SEVERE: org.jdom2.IllegalNameException: The name "literatur"" is not legal for JDOM/XML attributes: XML name 'literatur"' cannot contain the character """.

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

如果否:是否有其他适合抓取网站的图书馆可以使用标记中的引号?

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

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

由于没有对NekoHTML的任何依赖,我切换到jTidy作为在这种情况下完成工作的解析器。

问题回答。