2009-12-15 21 views
0

我正在寫一個使用Web服務與中間層進行通信的Flex商業應用程序。 Web服務接受並返回XML格式的消息。在很多情況下,我需要能夠允許用戶在應用程序的字段中輸入類似下面的內容,而這些字段又將作爲綁定SOAP Web服務的XML負載中的一個元素添加(不帶引號) :如何在actionscript中編碼保留的XML字符?

「賬戶餘額< 1000」

當試圖在文本節點與此序列化的元素(例如,賬戶餘額< 1000所以我需要一些方法來編碼「<」 Flex的解析器扼流圈到「<」,然後再進行XML序列化,另外,我更喜歡使用通用的方法來完成這個操作,比如在服務聲明中使用屬性,因爲我有超過40個服務必須支持這種輸入。 ?

回答

2
+0

但是,這種工作好,編碼輸入比原來的字符串長數倍的字符串結果。我所調用的服務對所討論的元素有最大長度限制,顯然編碼的字符串在評估約束之前未被解碼。所以現在我得到一個模式違規錯誤。 – lje 2009-12-15 22:14:19

+0

您是否擁有對服務的控制權? 如果你這樣做,那麼你需要避開字符串作爲服務的第一步。 如果不是,那麼我認爲你運氣不好。 SOAP Web服務的消息容器是XML。您的郵件不能包含任何令XML解析器混淆的內容。要麼刪除特殊字符(<, >等),要麼更改它們,然後將它們更改回服務器上。這是標準做法。 – 2009-12-16 18:15:26

+0

如果我從WSDL爲Web服務生成了ActionScript代理,那麼答案會有什麼不同?實際上,我只是創建了一個恰好與描述Web服務合約的模式相對應的XML文檔。 (關於爲什麼我這樣做,有一個很長很長的故事。)似乎任何合理的Web服務框架都會自動處理保留的XML字符的編碼/解碼。 – lje 2009-12-16 22:03:05