2012-06-06 86 views
3

如果你想連接一個Opa Web客戶端與XML-RPC服務器。發送請求的正確方式可能是如何用Opa解析XML?

xml request_body = @xml(
    <methodCall> 
    <methodName>my_rpc_method</methodName> 
    <params>some_rpc_params</params> 
    </methodCall> 
) 

request = WebClient.Post.of_xml(
    {WebClient.Post.default_options with 
    content: {some: request_body} 
    } 
) 

WebClient.Post.try_post_with_options_async(
    server_uri, 
    request, 
    callback 
) 

function callback(response) { 
    ... 
} 

現在,將服務器響應解析回Opa XML數據結構的正確方法是什麼?我目前爲此創建了自己的XML解析器,但這當然不是最佳實踐。

API顯示了幾種XML解析功能,如:

但是其中哪些是正確的那一個?該文檔沒有(還)講述他們的使用情況。或者可能是正確的,通過WebClient.Result.as_xml直接以XML格式轉換服務器響應?

我創建了repository,其中包含具有給定問題的可運行代碼。隨意分叉並修復它。

將這種XML服務器響應解析爲相應的數據結構的最好(也是最簡單的)方法是什麼?

JHannes

回答

2

好了,這裏就是你提到的三個功能做:

  • Xml_parser.try_parse是調用一個XML解析器功能。 XML解析器是使用xml_parser關鍵字構建的,並且與Opa的parser s有些相似,只不過它們解析XML而不解析文本。
  • XmlConvert.of_string是一個將string轉換爲xml的函數,所以它是一個簡單的函數,它只是構建由文本節點組成的XML。
  • Xmlns.try_parse嘗試進行相反的轉換:即需要string並嘗試將其解析爲「xml」。

因此,如果你得到一個字符串的響應和要處理它,那麼你通常會:

  1. 使用Xmlns.try_parse
  2. 解析成xml建立了一個xml_parser
  3. Xml_parser.try_parse調用它獲取XML數據的結構化表示。

如果您立即以XML形式獲取數據,則可以跳過上面的第一步。讓我知道這是否有幫助。