2014-07-09 39 views
0

我有我需要使用的第三方Web服務。對它的調用將是這樣的: https://somesitename.com/Service.dll?[operation]?[parameter1]&[parameter2]如何使用這種返回XML的Web服務?

它根據調用的操作和操作的結果返回各種XML結構。 它可以像這樣簡單:

<?xml version="1.0"?> 
<RESULTS> 
    <VALUE>some return value here</VALUE> 
</RESULTS> 

或爲返回稍微更復雜的數據呼叫,也可能是這樣的:

<?xml version="1.0" ?> 
<RESULTS> 
    <RETURN> 
     <RESPONSEMSG>Some message.</RESPONSEMSG> 
    </RETURN> 
    <DATA> 
     <COUNT>1</COUNT> 
     <VALUE1>1</VALUE1> 
     <VALUE2>1</VALUE2> 
     <VALUE3>FALSE</VALUE3> 
    </DATA> 
</RESULTS> 

如果調用了誤碼相反,它只是返回類似的東西:

<?xml version="1.0" ?> 
<RESULTS> 
    <RETURN> 
     <ERROR>Error Message.</ERROR> 
    </RETURN> 
</RESULTS> 

所以,基本上我只是試圖從REST服務消費XML響應。沒有數據合同,我只能繼續提供給我的示例回覆。我應該爲每種類型的結果構建poco類嗎?我在想我會使用HTTPClient或WebClient向服務發出請求。然後,我需要以某種方式將生成的XML反序列化爲可以返回的對象。這種事情有最佳做法或模式嗎?任何意見將不勝感激,謝謝!

+0

你試過Linq到XML? –

+0

這是關於這個http://support.microsoft.com/kb/307643的好文章我也相信這個問題已經在此之前得到解答http://stackoverflow.com/questions/14904171/read-xml-from-url – user1477388

+0

我認爲使用object(poco)是一種很好的做法,當您收到響應時,將它反序列化爲一個對象來執行此操作,您可以使用RestSharp這是一個非常有用的庫。 –

回答

0

大量的技術

linq2xml 或者您可以使用XPath,有XML解析庫加載在那裏。

儘管linq2xml這些日子可能是最簡單的。

只有linq2xml的問題是,如果你解析1個函數中的所有東西,你真的想在手之前驗證xml結構 - 找到問題。

0

是POCO最適合這種情況。然後使用LINQ-to-XML解析XML。它總是很好去強類型編程