비누 서비스의 응답이 있습니다.XML을 여러 유사한 노드에 대해 XMLReader를 사용하여 C#으로 구문 분석하십시오.
public class payment_history
{
public DateTime tTRANSDATE { get; set; }
public DateTime tPAIDTO { get; set; }
public double dAMOUNT { get; set; }
public double dBALANCE { get; set; }
public string TRANSKIND { get; set; }
}
나는이 XML 응답을 구문 분석하고 목록을 만들려고 노력하고 있어요 :이 같은 모델을 정의
<ArrayOfPaymentHistory_ST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<PaymentHistory_ST>
<tTRANSDATE>2015-01-05T08:58:17</tTRANSDATE>
<tPAIDTO>2015-02-01T00:00:00</tPAIDTO>
<dAMOUNT>110</dAMOUNT>
<dBALANCE>0</dBALANCE>
<TRANSKIND>Auto CC Payment</TRANSKIND>
<csUnit>Lee</csUnit>
</PaymentHistory_ST>
<PaymentHistory_ST>
<tTRANSDATE>2015-01-01T08:58:17</tTRANSDATE>
<tPAIDTO>2015-01-01T00:00:00</tPAIDTO>
<dAMOUNT>-110</dAMOUNT>
<dBALANCE>110</dBALANCE>
<TRANSKIND>Rent Posted</TRANSKIND>
<csUnit>Lee</csUnit>
</PaymentHistory_ST>
</ArrayOfPaymentHistory_ST>
: 뭔가 것 같습니다 payment_history 유형의 오브젝트. 그러면이 객체가 내 마크 업으로 전송되어 표에 표시됩니다. XMLReader를 사용하여 XML 파싱에 대한 많은 게시물을 발견했습니다. 나는 아직도 이것을 우아하게 할 수있는 좋은 해결책을 찾을 수 없다.
여기 내 C# 코드입니다.
List<payment_history> ph = new List<payment_history>();
payment_history p = new payment_history();
using (WebResponse response = request.GetResponse())
{
using (StreamReader rd = new StreamReader(response.GetResponseStream()))
{
string soapResult = rd.ReadToEnd();
using (XmlReader reader = XmlReader.Create(new StringReader(soapResult)))
{
#region parseXML
while (reader.Read())
{
foreach (var el in reader.ReadOuterXml())
{
if (reader.IsStartElement())
{
//return only when you have START tag
switch (reader.Name.ToString())
{
case "tTRANSDATE":
p.tTRANSDATE = Convert.ToDateTime(reader.ReadString());
break;
case "tPAIDTO":
p.tPAIDTO = Convert.ToDateTime(reader.ReadString());
break;
case "dAMOUNT":
p.dAMOUNT = Convert.ToDouble(reader.ReadString());
break;
case "dBALANCE":
p.dBALANCE = Convert.ToDouble(reader.ReadString());
break;
case "TRANSKIND":
p.TRANSKIND = reader.ReadString();
break;
}
ph.Add(p);
}
}
}
#endregion
}
}
}
return ph;
누군가가이 작업을 수행 할 수 있도록 안내 할 수 있습니까? 나는 C#에 익숙하지 않다. 어떤 종류의 도움이라도 대단히 감사 할 것입니다.
나는 LINQ2XML 다음을 시도했다. 그러나 아무것도 돌려주지 않는다!!
ph = XDocument.Parse(soapResult)
.Descendants("PaymentHistory_ST")
.Select(g => new payment_history
{
tTRANSDATE = (DateTime)g.Element("tTRANSDATE"),
tPAIDTO = (DateTime)g.Element("tPAIDTO"),
dAMOUNT = (double)g.Element("dAMOUNT"),
dBALANCE = (double)g.Element("dBALANCE"),
TRANSKIND = (string)g.Element("TRANSKIND")
}).ToList();
아마 LINQ2XML 좋은 해결책이 될 것입니다,하지만, 난 여전히 그것을 사용하는 방법을 모른다! 누구든지 조언 해주세요 !! – vohrahul