2010-10-13 30 views
0

有一些php API服務,當在查詢字符串中發送一些參數時,它以xml格式返回日期。所以我想知道如何發送呼叫該頁面並在c#.net中找回結果。像使用xml閱讀器或xml方案?如何接收網站生成的XML數據?

回答

0

更好的方法是

XmlDocument xdoc; 
xdoc = new XmlDocument(); 
xdoc.Load(XmlReader.Create("weblink")); 

的的XDocument是不可能進行分析,並提取其XML值這是可能的XmlDocument的

4

你可以通過一個URL地址XmlReader

using (var reader = XmlReader.Create("http://example.com/somexml")) 
{ 
    // TODO: parse 
} 

另一種可能性是使用XDocument

var doc = XDocument.Load("http://example.com/somexml"); 
// TODO: manipulate the document 

而另一個可能性是使用WebClient

using (var client = new WebClient()) 
{ 
    string xml = client.DownloadString("http://example.com/somexml"); 
    // TODO: feed the xml to your favorite XML parser 
} 
+0

目前還不清楚我是否XDocument.Load將* *實際工作與一個URI。文檔建議它用於*文件*而不是URI,儘管這可能會有些偏離。 – 2010-10-13 07:42:35

+0

@Jon,它的工作原理,測試它。在內部,該方法完全按照您在答案中所寫的內容添加了一個'XmlReaderSettings'。 – 2010-10-13 07:44:00

+0

很酷...參數名稱絕對暗示,我也錯過了。糟糕:) – 2010-10-13 07:45:27

3

如果參數在查詢中字符串,它很容易......我會用XmlReader.Create按照達林的答案,然後爲便於與XML工作,我會使用LINQ到XML:

XDocument doc; 
using (var reader = XmlReader.Create("http://example.com/somexml")) 
{ 
    doc = XDocument.Load(reader); 
} 
// Now work with doc 

(編輯:由於達林指出,XDocument.Load(string uri)使這變得更簡單 - 忽略文檔說它從文件加載數據的事實。)

如果您需要更多控制事物的HTTP端(例如包括POST數據),您可以使用類似:

WebRequest request = WebRequest.Create(...); 
// Fiddle with request here 

XDocument doc; 
using (WebResponse response = request.GetResponse()) 
using (Stream data = response.GetResponseStream()) 
{ 
    doc.Load(data); 
} 
// Use doc here 

注意,這是所有同步 - 解析這一切異步也是可能的,但更多的工作。