2016-07-18 7 views
-1

을 사용하여 노드 추출 API에서 XML 응답을 추출하려고합니다. 내 XML 응답은 아래와 같습니다. 나는 다른 방법을 시도했다. XMl 응답에서 개별 노드를 읽고 추출하는데 도움을받을 수 있습니까?XMl 응답 읽기 및 C#

예 : 아래 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 Linq에를 사용하여 다음과 같은

+0

무엇을 시도 했습니까? 그리고 당신은 무엇을 추출하려고합니까? LINQ to XML은 여러 가지가 필요한 경우 좋은 옵션이 될 수 있습니다. 전체 메시지를 표현해야하는 경우 XML 직렬화가 더 적합 할 수 있습니다. 지금까지, 당신은 연구를 해본 것처럼 보이지 않습니다. 아마도 [ask]를 읽었을 것입니다. –

답변

0

try 코드. 로드 (FILENAME 또는 URL) 메소드를 사용했지만 구문 분석 (STRING)을 사용할 수도 있습니다.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     const string FILENAME = @"c:\temp\test.xml"; 
     static void Main(string[] args) 
     { 
      XDocument doc = XDocument.Load(FILENAME); 
      var results = doc.Descendants().Where(x => x.Name.LocalName == "TrxDetailCard").Select(y => new { 
       TRX_HD_Key = (int)y.Element(y.Name.Namespace + "TRX_HD_Key"), 
       Invoice_ID = (int)y.Element(y.Name.Namespace + "Invoice_ID"), 
       Date_DT = (DateTime)y.Element(y.Name.Namespace + "Date_DT"), 
       Merchant_Key = (int)y.Element(y.Name.Namespace + "Merchant_Key") 
      }).ToList(); 
     } 
    } 

} 
+0

아래에서 다른 방법을 시도했지만 모든 시도에서 결과가 텍스트로 렌더링됩니다. XmlDocument xmlDocument123 = 새 XmlDocument(); XmlTextReader myXMLReader123 = null; myXMLReader123 = 새 XmlTextReader (response2.GetResponseStream()); xmlDocument123.Load (myXMLReader123); 첫 번째 방법 (XPath는 사용) : 의 foreach (xmlDocument123.SelectNodes에서의 XMLNode xmlnode1 ("// 문자열/RichDBDS/TrxDetailCard")) { \t Console.Out.WriteLine (xmlnode1.Value)를; } – vinisha9

+0

번째 방법. xmlDocument123.ChildNodes.Item (0) .ChildNodes.Item (0) .SelectNodes ("TrxDetailCard") ToString() 위의 모든 시험에서 는 I 텍스트 데이터로 복귀 형 렌더링있다. 특정 노드/요소를 찾을 수 없습니다. – vinisha9

+0

스트레이트 XML을 사용하고 있지 않습니다. 향상된 Net Library XML Linq를 사용하고 있습니다. 시도해보십시오 : XDocument doc = XDocument.Load (response2.GetResponseStream()); – jdweng