簡體   English   中英

元素類型“META”必須以匹配的結束標簽“</META> ”

[英]The element type “META” must be terminated by the matching end-tag “</META>”

當我嘗試使用 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

任何幫助將不勝感激。 謝謝。


更新:

感謝你的回答。 我將代碼更改為不同的解析器,好消息是文件現在可以正確解析。 糟糕的是,它現在為另一個提要相同的問題而移動,盡管提要完全不同,但它還是在同一行,並且以前運行良好。 誰能想到為什么會這樣?

看起來它是一個實時文檔; 即一個變化相當頻繁的。 其中也沒有<meta>標簽的跡象。

對於正在發生的事情,我可以想到兩種解釋:

  • 有時,文檔的生成或創建不正確。

  • 有時您會得到一個 HTML 錯誤頁面而不是您期望的文檔,並且 XML 解析器無法處理 HTML 的<head>中的<meta>標記。 那是因為(有效)HTML 中的<meta>標簽不需要匹配/結束</meta>標簽。 (至少對於某些版本的 HTML,不允許有結束標記。)

為了追蹤這一點,您必須捕獲導致解析失敗的精確輸入。

有兩種解決方案:

  1. 您可以嘗試<meta/>而不是<meta>

  2. application.properties文件中添加spring.thymeleaf.mode=LEGACYHTML5

並在您的pom.xmlbuild.gradle文件中添加了此依賴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'

只需在每行帶有 meta 后應用 ( / )

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

使用時,

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

真的有效

它不是 XML 而是 HTML:

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

XML 解析器不會解析它。

我看到該文件沒有任何內容,而且看起來不像有效的 RSS 文件。 可能發生任何服務器端錯誤。

你能用這個標簽嗎

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM