2012-12-08 114 views
0

我在下面的XML響應。我需要將每個節點及其值存儲在數組中,並將該數組作爲查詢字符串附加到URL中,並重定向到不同的頁面。請幫助在數組中存儲XML節點

<responseId>76</responseId> 
<status>SUCCESS</status> 
<result> 
    <reference_number>FA002900118</reference_number> 
    <remitter_id>10023</remitter_id> 
    <remitter_name>TEST SACCO</remitter_name> 
    <beneficiary_id>9</beneficiary_id> 
    <beneficiary_name>KENYA USA DIASPORA SACCO LTD</beneficiary_name> 
    <trans_type>Account</trans_type> 
    <destination_country>Kenya</destination_country> 
    <source_currency>USD</source_currency> 
    <source_transfer_amount>10.00</source_transfer_amount> 
    <rate>83.4000</rate> 
    <destination_currency>KES</destination_currency> 
    <destination_amount>834.00</destination_amount> 
    <commission>5.00</commission> 
    <agent_fee>0.00</agent_fee> 
    <hq_fee>0.00</hq_fee> 
    <remitter_pay_amount>15.00</remitter_pay_amount> 
    <agent_deduction>2.50</agent_deduction> 
    <agent_to_pay_hq>12.50</agent_to_pay_hq> 
    <delivery_date>2012-12-07 00:00:00-05</delivery_date> 
    <payment_token>3954d4d87aa2926dbb6150658881ec4622b101b6</payment_token> 
</result> 

我莫名其妙地達到一些代碼來獲取一些分隔符的輸出,但仍然感到困惑如何把同一陣列中的和PaaS作爲查詢字符串到下一頁

string str =「」;

XmlTextReader reader = new XmlTextReader("D:/TempXml.Xml"); 
    while (reader.Read()) 
    { 
     XmlNodeType nodeType = reader.NodeType; 
     switch (nodeType) 
     { 
      case XmlNodeType.Element: 
       str+= " Element - " + reader.Name + ";"; 
       if (reader.HasAttributes) 
       { 
        for (int i = 0; i < reader.AttributeCount; i++) 
        { 
         reader.MoveToAttribute(i); 
         str+= "Attribute - " + reader.Name + reader.Value; 
        } 
       } 
       break; 
      case XmlNodeType.Text: 
       str += " Value - " + reader.Value + ";"; 
       break; 
     } 
    } 
    Label1.Text = str; 

輸出

元素 - 響應; Element - responseId;價值 - 76;元素 - 狀態;價值 - 成功;元素 - 結果;元素 - reference_number;價值 - FA002900118;元素--remitter_id;價值 - 10023;元素 - remitter_name;價值 - 測試SACCO;元素 - beneficiary_id;價值 - 9;元素 - beneficiary_name;價值 - KENYA USA DIASPORA SACCO LTD;元素 - trans_type;價值 - 賬戶;元素 - destination_country;價值 - 肯尼亞;元素 - source_currency;價值 - 美元;元素 - source_transfer_amount;價值 - 10.00;元素率;價值 - 83.4000;元素 - destination_currency;價值 - KES;元素 - destination_amount;價值 - 834.00;元素 - 佣金;價值 - 5.00;元素 - agent_fee;值 - 0.00;元素 - hq_fee;值 - 0.00;元素 - remitter_pay_amount;價值 - 15.00;元素 - agent_deduction;價值 - 2.50;元素 - agent_to_pay_hq;價值 - 12.50;元素 - delivery_date;價值 - 2012-12-07 00:00:00-05;元素 - payment_token;價值 - 3954d4d87aa2926dbb6150658881ec4622b101b6;

回答

0

使用下面的代碼,你可以得到的KeyValuePair,其中關鍵是標籤名稱和值List是標籤內容的文字:

string responce = @" 
<responce> 
<responseId>76</responseId> 
<status>SUCCESS</status> 
<result> 
<reference_number>FA002900118</reference_number> 
<remitter_id>10023</remitter_id> 
<remitter_name>TEST SACCO</remitter_name> 
<beneficiary_id>9</beneficiary_id> 
<beneficiary_name>KENYA USA DIASPORA SACCO LTD</beneficiary_name> 
<trans_type>Account</trans_type> 
<destination_country>Kenya</destination_country> 
<source_currency>USD</source_currency> 
<source_transfer_amount>10.00</source_transfer_amount> 
<rate>83.4000</rate> 
<destination_currency>KES</destination_currency> 
<destination_amount>834.00</destination_amount> 
<commission>5.00</commission> 
<agent_fee>0.00</agent_fee> 
<hq_fee>0.00</hq_fee> 
<remitter_pay_amount>15.00</remitter_pay_amount> 
<agent_deduction>2.50</agent_deduction> 
<agent_to_pay_hq>12.50</agent_to_pay_hq> 
<delivery_date>2012-12-07 00:00:00-05</delivery_date> 
<payment_token>3954d4d87aa2926dbb6150658881ec4622b101b6</payment_token> 
</result> 
</responce>"; 

     StringReader reader=new StringReader(responce); 

     XElement root = XElement.Load(reader); 

     XElement resultNode = (XElement)root.Nodes().Single(node => ((XElement)node).Name == "result"); 

     IList<KeyValuePair<string, string>> result = new List<KeyValuePair<string, string>>(); 

     foreach(XElement item in resultNode.Nodes()) 
     { 
      KeyValuePair<string, string> resultItem = new KeyValuePair<string, string>(item.Name.ToString(), item.Value); 
      result.Add(resultItem); 
     } 

我想你可以創建查詢字符串形式的列表。 對於重定向到其他頁面ASP.NET你可以使用HttpResponce.Redirect(更多信息http://msdn.microsoft.com/en-us/library/t9dwyts4.aspx

+0

這是有道理的..只是一個用於要求我怎麼可以從文件 –

+0

您可以使用XDocument.Load(文件路徑)的字符串性反應從文件中獲取xml。但文件必須包含有效的xml – Frank59

+0

謝謝它的工作! –

相關問題