11

当我尝试使用 Java(在 GAE 服务器中)解析 XML 文件时,有时会出现以下错误:

Parse: org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 3; The element type "META" must be terminated by the matching end-tag "</META>".

然而它并不是一直都在发生,有时它的工作正常。解析xml文件的程序,我对它们没有问题。

这是我要解析的 XML 文件: http ://www.fulhamchronicle.co.uk/london-chelsea-fc/rss.xml

任何帮助将不胜感激。谢谢。


更新:

感谢你的回答。我将代码更改为不同的解析器,好消息是文件现在可以正确解析。糟糕的是,它现在因另一个提要相同的问题而移动,尽管提要完全不同,但它在同一行中运行良好,并且以前运行良好。谁能想到为什么会这样?

4

5 回答 5

6

这看起来像是一个实时文档;即变化相当频繁的一种。里面也没有<meta>标签的迹象。

对于正在发生的事情,我可以想到两种解释:

  • 有时文档生成或创建不正确。

  • 有时您会得到一个 HTML 错误页面而不是您期望的文档,并且 XML 解析器无法处理<meta>HTML 的<head>. 那是因为<meta>(有效的)HTML 中的标签不需要有匹配/结束</meta>标签。(并且至少对于某些版本的 HTML,不允许有结束标记。)

要追踪这一点,您将必须捕获导致解析失败的精确输入。

于 2013-05-13T16:04:36.880 回答
4

有两种解决方案:

  1. 您可以尝试<meta/>代替<meta>.

  2. 添加spring.thymeleaf.mode=LEGACYHTML5到您的application.properties文件中。

pom.xml并在您或build.gradle文件中添加此依赖项。

pom.xml

<dependency>
     <groupId>net.sourceforge.nekohtml</groupId>
     <artifactId>nekohtml</artifactId>
     <version>1.9.21</version>
 </dependency>

gradle

compile 'net.sourceforge.nekohtml:nekohtml:1.9.21'
于 2017-01-19T05:07:24.513 回答
1

只需/在每行 meta 后应用 ()

<meta name=" " content=" " />

使用时,

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

真的很有效

于 2019-09-05T05:27:45.650 回答
0

它不是 XML 而是 HTML:

< !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" " http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd ">

XML 解析器不会解析它。

我看到该文件没有任何内容,而且看起来不像是有效的 RSS 文件。可能会发生任何服务器端错误。

于 2013-05-14T12:51:19.497 回答
0

你能用这个标签吗

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
于 2019-02-25T05:39:37.153 回答