2009-03-05 57 views
2

我正在編寫一個使用beta web服務API的Air應用程序。有時候,這個API返回給我一個格式不正確的XML節點,當我嘗試從其中創建XML對象時,actionscript會引發錯誤。如何解析/忽略格式錯誤的XML部件?

我一直在做的只是嘗試/捕捉結果,並忽略整個響應,如果XML是壞的,但我可以忽略格式錯誤的節點。

例如:

<result> 
    <Song> 
    <location>http://www.anyurl.com/audio/loftparty092108_pt4.mp3</location> 
    <title>Phonte party @ The Loft, 9/21/08 (pt. 4)</title> 
    <artist>Statik, Jahsonic &amp; Stylus  <artist>Statik, Jahsonic &amp; Stylusre /> 
    </Song> 
</result> 

見該標籤?如果我這樣做,我想跳過整首歌並拿到下一首。

有什麼辦法可以做到這一點?

回答

1
  1. 寫入web服務提供者。告訴他們有關格式不正確的XML。他們可能只是修復它。
  2. 當格式錯誤的XML被傳回時,Flex的默認XML解碼器不知所措。
  3. 如果你想嘗試處理你自己的解碼器。查看HTTPServicexmlDecode會員。
+0

1.我已經做過。我只是想快速修復我的代碼,因爲我不知道他們什麼時候會修復它。 2.我注意到了。 :) 3.我會研究,但我沒有使用HTTPService,我使用我自己的URLLoader實現。 – leolobato 2009-03-05 20:04:24

+0

在這種情況下,您需要完整事件的自定義處理程序。 – dirkgently 2009-03-05 20:27:58

1

Beautiful Soup這樣做,但它是用Python編寫的。你當然可以總是從源頭上挖掘,看看他們是如何實現它的。

1

如果錯誤類的數量很少,請預處理XML以刪除錯誤,然後將其交給解析器。這將使您能夠在解決問題時輕鬆地移除解決方法。在上述情況下,您可以將文件加載爲文本,查找帶有重複標籤的節點,然後從XML文本中刪除整個節點。

或者只是通知Web服務提供商並等待 - 如果他們返回格式錯誤的XML,幾乎每個解析器都會窒息,應該有動力盡快修復它。

1

不,您不能忽略具有普通XML解析器的格式錯誤的XML文檔的一部分。這就像要求Flex編譯器忽略語法錯誤並找出編碼器的真正意圖。你將不得不編寫你自己的解析器,試圖推斷什麼是畸形,什麼可以忽略。老實說,任何發送錯誤XML的Web服務,即使是測試版都是不可靠的。這意味着他們正在編寫XML「手工」而不是使用程序化類。任何人都可能會犯很多其他錯誤,尤其是迴歸。你的時間太過寶貴,不能依賴於他們。

乾杯