[英]XMLStreamException: ParseError at [row,col]:[5,3] Message: The element type “meta” must be terminated by the matching end-tag “</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,不允許有結束標記。)
為了追蹤這一點,您必須捕獲導致解析失敗的精確輸入。
有兩種解決方案:
您可以嘗試<meta/>
而不是<meta>
。
在application.properties
文件中添加spring.thymeleaf.mode=LEGACYHTML5
。
並在您的pom.xml
或build.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.