尝试解析XML流时出现Java错误

时间:2013-01-02 20:52:59

标签: java xml parsing

我创建了一个url,它会触发我们的GSA返回XML回复。我已经仔细检查了网址生成是否有效。

当我尝试使用以下代码行解析流时:

Document doc = (Document) db.parse(new URL(filePath).openStream());

在系统日志中,我收到以下错误:

Error: URI=null Line=2: Document root element "GSP", must match DOCTYPE root "null"
Error: URI=null Line=2: Document is invalid: no grammar found

XML文件看起来像这样(我使用xxx来删除识别信息):

<GSP VER="3.2">
<TM>0.011504</TM>
<Q>xxxxxxx</Q>
<PARAM name="output" value="xml_no_dtd" original_value="xml_no_dtd"/>
<PARAM name="q" value="xxxxxxx" original_value="xxxxxxx"/>
<PARAM name="site" value="xxxxxxx" original_value="xxxxxxx"/>
<PARAM name="btn" value="" original_value=""/>
<PARAM name="ie" value="UTF-8" original_value="UTF-8"/>
<PARAM name="ip" value="xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx" original_value="xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx"/>
<PARAM name="access" value="p" original_value="p"/>
<PARAM name="sort" value="date:D:L:d1" original_value="date:D:L:d1"/>
</GSP>

是否有人在此之前处理过这样的问题可以提供一些指导措施?

2 个答案:

答案 0 :(得分:1)

您的DocumentBuilder已启用验证,但您没有定义DTD(替代方案:您定义的DTD与实际内容不匹配)。

答案 1 :(得分:1)

我现在在工作,但我的建议是看看Jaxb。它具有惊人的注释支持,通常用于处理xml的框架中。

Jaxb可以让您的生活更轻松,这是一个安全的选择。