C# 使用c读取XMl响应并提取节点#

C# 使用c读取XMl响应并提取节点#,c#,.net,xml,xmlhttprequest,C#,.net,Xml,Xmlhttprequest,我试图从API中提取XML响应。我的XML响应如下所示。我尝试了不同的方法。您能帮助我从XMl响应中读取和提取各个节点吗 <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"> <RichDBDS><TrxDetailCard><TRX_HD_Key>5437845</TRX_HD_Key> <Invoice_ID>189809</I

我试图从API中提取XML响应。我的XML响应如下所示。我尝试了不同的方法。您能帮助我从XMl响应中读取和提取各个节点吗

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
<RichDBDS><TrxDetailCard><TRX_HD_Key>5437845</TRX_HD_Key>   <Invoice_ID>189809</Invoice_ID><Date_DT>3/24/2016 1:34:44 PM</Date_DT><Merchant_Key>2202</Merchant_Key><Reseller_Key>2</Reseller_Key><TUser_Name_VC>ITSTEST.ISMI</TUser_Name_VC><Processor_ID>CC Processor</Processor_ID><TRX_Settle_Key></TRX_Settle_Key><Tip_Amt_MN></Tip_Amt_MN><Approval_Code_CH>24032016013444</Approval_Code_CH><Auth_Amt_MN>184.99</Auth_Amt_MN><IP_VC>66.55.53.68</IP_VC><Account_Type_CH>MANUAL</Account_Type_CH><Last_Update_DT></Last_Update_DT><Orig_TRX_HD_Key></Orig_TRX_HD_Key><Settle_Date_DT></Settle_Date_DT><Settle_Flag_CH>FALSE</Settle_Flag_CH><Trans_Type_ID>Sale</Trans_Type_ID><Void_Flag_CH>FALSE</Void_Flag_CH><CustomerID></CustomerID><AVS_Resp_CH>Y</AVS_Resp_CH><CV_Resp_CH>M</CV_Resp_CH><Host_Ref_Num_CH>0b144718-3597-4cfb-a2b5-058679510f29</Host_Ref_Num_CH><Zip_CH>30328</Zip_CH><Acct_Num_CH>1111</Acct_Num_CH><Total_Amt_MN>184.99</Total_Amt_MN><Exp_CH>0917</Exp_CH><Name_on_Card_VC>Kenneth Boler</Name_on_Card_VC><Type_CH>VISA</Type_CH><Cash_Back_Amt_MN></Cash_Back_Amt_MN><Result_CH>0</Result_CH><Result_Txt_VC>approval</Result_Txt_VC><Trans_Status>Settled</Trans_Status><PO_Num></PO_Num></TrxDetailCard></RichDBDS>
例如:我想从下面的XML响应中提取节点

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
<RichDBDS><TrxDetailCard><TRX_HD_Key>5437845</TRX_HD_Key>   <Invoice_ID>189809</Invoice_ID><Date_DT>3/24/2016 1:34:44 PM</Date_DT><Merchant_Key>2202</Merchant_Key><Reseller_Key>2</Reseller_Key><TUser_Name_VC>ITSTEST.ISMI</TUser_Name_VC><Processor_ID>CC Processor</Processor_ID><TRX_Settle_Key></TRX_Settle_Key><Tip_Amt_MN></Tip_Amt_MN><Approval_Code_CH>24032016013444</Approval_Code_CH><Auth_Amt_MN>184.99</Auth_Amt_MN><IP_VC>66.55.53.68</IP_VC><Account_Type_CH>MANUAL</Account_Type_CH><Last_Update_DT></Last_Update_DT><Orig_TRX_HD_Key></Orig_TRX_HD_Key><Settle_Date_DT></Settle_Date_DT><Settle_Flag_CH>FALSE</Settle_Flag_CH><Trans_Type_ID>Sale</Trans_Type_ID><Void_Flag_CH>FALSE</Void_Flag_CH><CustomerID></CustomerID><AVS_Resp_CH>Y</AVS_Resp_CH><CV_Resp_CH>M</CV_Resp_CH><Host_Ref_Num_CH>0b144718-3597-4cfb-a2b5-058679510f29</Host_Ref_Num_CH><Zip_CH>30328</Zip_CH><Acct_Num_CH>1111</Acct_Num_CH><Total_Amt_MN>184.99</Total_Amt_MN><Exp_CH>0917</Exp_CH><Name_on_Card_VC>Kenneth Boler</Name_on_Card_VC><Type_CH>VISA</Type_CH><Cash_Back_Amt_MN></Cash_Back_Amt_MN><Result_CH>0</Result_CH><Result_Txt_VC>approval</Result_Txt_VC><Trans_Status>Settled</Trans_Status><PO_Num></PO_Num></TrxDetailCard></RichDBDS>

5437845 1898093/24/2016 1:34:44 PM22022ITSTEST.ISMICC处理器24032016013444184.9966.55.53.68手册FalseSaleFalseYM0B144718-3597-4cfb-a2b5-058679510f29303281111184.990917 Kenneth Bolervisa0批准已完成

使用XML Linq尝试下面这样的代码。我使用了Load(FILENAME或URL)方法,但也可以使用Parse(STRING)


你试过什么?你想提取什么?如果您只需要一些东西,LINQ到XML将是一个不错的选择,如果您需要整个消息的表示,XML序列化可能更适合。到目前为止,你似乎还没有做过任何研究——也许你已经读过了。我尝试过以下不同的方法,但对于所有的试验,我都得到了文本形式的结果。XmlDocument xmlDocument123=新的XmlDocument();XmlTextReader myXMLReader123=null;myXMLReader123=新的XmlTextReader(response2.GetResponseStream());加载(myXMLReader123);第一种方法(使用Xpath):foreach(xmlDocument123.SelectNodes(“//string/RichDBDS/TrxDetailCard”){Console.Out.WriteLine(xmlnode1.Value);}第二种方法:xmlDocument123.ChildNodes.Item(0).ChildNodes.Item(0).在所有上述试验中,SelectNodes(“TrxDetailCard”).ToString(),我将返回类型呈现为文本数据。我找不到特定的节点/元素。我没有使用纯xml,我使用的是增强的网络库xml Linq。Try:XDocument doc=XDocument.Load(response2.GetResponseStream());