Java “元素类型”;META";必须由匹配的结束标记“终止”</META>&引用;

Java “元素类型”;META";必须由匹配的结束标记“终止”</META>&引用;,java,xml,google-app-engine,saxparser,Java,Xml,Google App Engine,Saxparser,当我试图用Java(在GAE服务器中)解析XML文件时,有时会出现以下错误: Parse:org.xml.sax.SAXParseException;行号:10;列数:3;元素类型“META”必须由匹配的结束标记“”终止。 然而,这并不是一直都在发生,有时还可以。程序正在解析xml文件,我对它们没有问题 这是我试图解析的XML文件: 任何帮助都将不胜感激。谢谢 更新: 谢谢你的回答。我将代码更改为另一个解析器,好消息是该文件现在正在正确解析。 糟糕的是,它现在换了另一个饲料,同样的问题,同

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

Parse:org.xml.sax.SAXParseException;行号:10;列数:3;元素类型“META”必须由匹配的结束标记“”终止。
然而,这并不是一直都在发生,有时还可以。程序正在解析xml文件,我对它们没有问题

这是我试图解析的XML文件:

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


更新:

谢谢你的回答。我将代码更改为另一个解析器,好消息是该文件现在正在正确解析。
糟糕的是,它现在换了另一个饲料,同样的问题,同一条线,尽管饲料完全不同,它以前工作得很好。有人能想到它为什么会发生吗?

这看起来像是一个实时文档;i、 变化相当频繁的人。也没有
标记的迹象

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

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

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


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

这不是XML,而是HTML:

XML解析器不会解析它


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

有两种解决方案:

  • 您可以尝试
    而不是

  • 应用程序.properties
    文件中添加
    spring.thymeleaf.mode=LEGACYHTML5

  • 并在
    pom.xml
    build.gradle
    文件中添加了此依赖项

    pom.xml

    <dependency>
         <groupId>net.sourceforge.nekohtml</groupId>
         <artifactId>nekohtml</artifactId>
         <version>1.9.21</version>
     </dependency>
    
    你能用这个标签吗

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    
    
    
    只需在每行meta后应用(
    /

    
    
    使用时

    
    

    而且确实有效

    您确定您的文件就是您发布的文件吗?它没有
    meta
    节点。您发布的文件的第10行也是空的问题是由Saxon引起的,请参阅“新元元素是Saxon提醒我们显式声明文件的字符集和编码的方式”
    compile 'net.sourceforge.nekohtml:nekohtml:1.9.21'
    
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />