簡體   English   中英

將XML節點存儲在數組中

[英]Store XML nodes in array

我在XML響應下面有這個。 我需要將每個節點及其值存儲在數組中,並將數組作為查詢字符串附加到URL中,然后重定向到其他頁面。 請幫忙

<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>

我以某種方式到達了一些代碼,以使用一些定界符獲取輸出,但是仍然困惑如何將其放入數組並將其作為查詢字符串停放在下一頁

字符串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;

輸出

元素-回應; 元素-responseId; 價值-76; 元素-狀態; 價值-成功; 元素-結果; 元素-reference_number; 價值-FA002900118; 元素-remitter_id; 價值-10023; 元素-remitter_name; 價值-測試SACCO; 元素-beneficiary_id; 價值-9; 元素-受益人名稱; 價值-肯尼亞美國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;

使用下面的代碼,您可以獲得KeyValuePair List ,其中key是標記名稱,value是標記內容文本:

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/zh-cn/library/t9dwyts4.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM