2017-08-22 89 views
0

我想從xml文件中獲取緯度(lat)和經度(lon)值。C#從xml文件獲取值

生成的XML文件使用下面的代碼生成Web請求。

代碼

var request = WebRequest.Create("#") as HttpWebRequest; 
request.Credentials = new System.Net.NetworkCredential("#", "#"); 
var response = request.GetResponse(); 
Stream receiveStream = response.GetResponseStream(); 
StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); 
var result = readStream.ReadToEnd(); 
String xmlString = result; 
System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader(new System.IO.StringReader(xmlString)); 
reader.Read(); 
System.Data.DataSet ds = new System.Data.DataSet(); 
ds.ReadXml(reader, System.Data.XmlReadMode.Auto); 
DataTable dt = ds.Tables[0]; 
lbllat.Text = dt.Rows[0][5].ToString();//for example 
lbllong.Text = dt.Rows[0][6].ToString(); 

但代碼給這個以下錯誤味精。

Error: '>' is an unexpected token. The expected token is '='. Line 2, position 483

主要發生錯誤是因爲XML標記不接受空格。

生成的xml文件格式。

<?xml version="1.0"?> 
<root> 
    <code>0</code> 
    <msg>OK</msg> 
    <data> 
    <agentid>1</agentid> 
    <imei>3224</imei> 
    <typeid>2</typeid> 
    <type>Truck</type> 
    <vehiclenumber>12121</vehiclenumber> 
    <folder>folder1</folder> 
    <created_time>1493813160</created_time> 
    <current_mileage>4232</current_mileage> 
    <status> 
     <active>1</active> 
     <speed>0</speed> 
     <direction>303</direction> 
     <lat>3.79092</lat> 
     <lon>69.51279</lon> 
     <alt>1</alt> 
     <satsinview>18</satsinview> 
     <unixtimestamp>1503389638</unixtimestamp> 
     <sensors> 
     <Ignition sensor="">Off</Ignition sensor><External power="" supply="">On</External power supply> 
     </sensors> 
    </status> 
    </data> 
</root> 

有什麼建議嗎?

+3

是的,''是錯誤的。應該是''。與您的''標籤相同。不要在結束標籤中包含屬性。 – itsme86

+0

是的,但自從生成拋出的Web請求後,我無法更改格式。 – Ayman

+0

您可以做的最好的做法是預處理'xmlString',即用替換等,使其成爲有效的XML,然後解析它。 –

回答

0

首先,獲取XML固定的,但如果您不能然後使用HTML Agility Pack檢索錯誤形成的XML。這對於webscraping非常有用,並且處理格式錯誤的XML。