簡體   English   中英

XML CDATA錯誤:元素類型 <X> 必須以匹配的結束標簽終止 </X>

[英]XML CDATA error: The element type <X> must be terminated by the matching end-tag </X>

我在XML Feed中收到以下數據:

<imagetag><![CDATA[
http://images.dealer.com/0098/65654e9beaae8aca2eeb7778e723e733x.jpg]
]></imagetag>

我有兩個問題:

  1. 當我在此處嘗試驗證XML時,出現錯誤: The element type "imagetag" must be terminated by the matching end-tag "</imagetag>".
  2. 我無法找出提取Javascript的正則表達式。 我最接近的是: ([\\s\\S]*)<imagetag><!\\[CDATA\\[([\\s\\S]*)\\]\\]><\\/imagetag>([\\s\\S]*) 如果.jpg]之后沒有換行符,則可以完美運行,但是可以!

我猜這兩個問題是相關的,但我不確定原因。 任何幫助表示贊賞!

首先,認識到您不需要CDATA來表示XML中的URL。

其次,使用XML解析器收到錯誤的原因是您的數據不是XML。 您的CDATA部分格式不正確: CDATA結束標記CDEnd不能在其中包含換行符:

[18]    CDSect     ::=      CDStart CData CDEnd
[19]    CDStart    ::=      '<![CDATA['
[20]    CData      ::=      (Char* - (Char* ']]>' Char*))
[21]    CDEnd      ::=      ']]>'

因此,對於您的XML解析器發出錯誤是完全正確的。

前進的方法是不要嘗試通過正則表達式解析XML (盡管可能會針對特定問題(例如,查找和修復帶有嵌入式空白的[ ]]>進行抽查/修復)。 前進的道路是修復數據。 這是為正確使用CDATA而修復的數據:

<imagetag><![CDATA[
http://images.dealer.com/0098/65654e9beaae8aca2eeb7778e723e733x.jpg
]]></imagetag>

要么

<imagetag><![CDATA[http://images.dealer.com/0098/65654e9beaae8aca2eeb7778e723e733x.jpg]]></imagetag>

重要說明: CDStart必須為<![CDATA[並且CDEnd必須為]]>且沒有換行符 還請注意]]>不能出現在CDATA部分中; CDATA節不能嵌套。

如果無法修復數據,請拒絕數據。 處理格式不正確的文本數據(如XML)是不合適的。 它只會使問題永久存在。

暫無
暫無

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

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