2012-11-11 42 views
0

好吧,我會盡力解釋這個快速,我可以簡單提取某些數據...如何從XML文檔

我所試圖做的是從XML中提取四個不同的東西.. 。首先關閉我正在使用的XML的here is the url,然後從那個URL我試圖只顯示名稱(符號),最後,高和低。

所以在我的應用程序時,用戶點擊按鈕獲取股票報價顯示的內容,現在是從XML的一切,但我只希望我上面列出的4件事露面。

這裏是我的代碼,我現在...

 HttpWebRequest myHttpWebRequest = null;  //Declare an HTTP-specific implementation of the WebRequest class. 
    HttpWebResponse myHttpWebResponse = null; //Declare an HTTP-specific implementation of the WebResponse class 
    XmlTextReader myXMLReader = null;   //Declare XMLReader   
    XPathNavigator nav; 
    XPathDocument docNav; 

    //Create Request 
    String stockQuote = "http://www.webservicex.net/stockquote.asmx/GetQuote?Symbol=T" + txtInfo.Text; 


    myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(stockQuote); 
    myHttpWebRequest.Method = "GET"; 
    myHttpWebRequest.ContentType = "text/xml; encoding='utf-8'"; 
    //Get Response 
    myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); 

    //Load response stream into XMLReader 
    myXMLReader = new XmlTextReader(myHttpWebResponse.GetResponseStream()); 

    docNav = new XPathDocument(myXMLReader); 
    // Create a navigator to query with XPath. 
    nav = docNav.CreateNavigator(); 


    txtResults.Text = txtResults.Text + nav.Name + " - " + nav.Value + Environment.NewLine; 

回答

2

的問題是,服務沒有實際提供的XML飼料,它只是圍繞,看起來像XML編碼的一些數據的XML封裝。在使用xpath訪問任何元素之前,您必須對其進行預處理。你可以看到這一點,如果你xmllint它

%xmllint --format 'http://www.webservicex.net/stockquote.asmx/GetQuote?Symbol=T' 
<?xml version="1.0" encoding="utf-8"?> 
<string xmlns="http://www.webserviceX.NET/">&lt;StockQuotes&gt;&lt;Stock&gt;&lt;Symbol&gt;T&lt;/Symbol&gt;&lt;Last&gt;33.54&lt;/Last&gt;&lt;Date&gt;11/9/2012&lt;/Date&gt;&lt;Time&gt;4:00pm&lt;/Time&gt;&lt;Change&gt;+0.34&lt;/Change&gt;&lt;Open&gt;33.02&lt;/Open&gt;&lt;High&gt;33.72&lt;/High&gt;&lt;Low&gt;32.71&lt;/Low&gt;&lt;Volume&gt;31871880&lt;/Volume&gt;&lt;MktCap&gt;190.5B&lt;/MktCap&gt;&lt;PreviousClose&gt;33.20&lt;/PreviousClose&gt;&lt;PercentageChange&gt;+1.02%&lt;/PercentageChange&gt;&lt;AnnRange&gt;27.41 - 38.58&lt;/AnnRange&gt;&lt;Earns&gt;0.756&lt;/Earns&gt;&lt;P-E&gt;43.92&lt;/P-E&gt;&lt;Name&gt;AT&amp;T Inc.&lt;/Name&gt;&lt;/Stock&gt;&lt;/StockQuotes&gt;</string> 

我不是一個.NET程序員,所以我不能給你一個說明的答案,但是從我讀什麼XmlTextReader它看起來像它的目標是讀取已經是XML的數據。然而,該響應的唯一部分是XML是<string>元件,它的其餘部分已被轉義,所述<>分別轉換爲&lt;&gt;,這使得它只是一串文字。

在這一點上,我的15分鐘的.net體驗,它看起來像你需要將它們轉換回來(不知道這是什麼最佳實踐),然後可能使用像LoadXML之類的東西你實際上可以使用XmlTextReader就可以了。請適當調整您接受此建議的鹽度。

或者你可以嘗試並獲得無論是誰提供的服務實際上發出真正的XML。

+0

我還是新來的XML,所以我有點困惑你告訴我做什麼 –