我如何从字符串中解析xml

时间:2017-08-11 05:19:31

标签: c# xml c#-4.0 xml-parsing c#-3.0

请我尝试将我从Web服务获得的结果转换为字符串并将其转换为对象。

这是我从我的服务中获得的字符串:

 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <AccountStatementResponse xmlns="http://formalityzues.com/">
         <AccountStatementResult><![CDATA[<?xml version="1.0" encoding="UTF-8" ?><ViewStatementResponse><TransactionItems><RefNumber>2</RefNumber><TransactionDate>31/05/2017</TransactionDate><ValueDate>31/05/2017</ValueDate><Amount>400</Amount><Narration>CHIEF ATTENDANT</Narration><TransactionType>CR</TransactionType><BalanceAfterTransaction>57003602.16</BalanceAfterTransaction></TransactionItems><TransactionItems><RefNumber>3</RefNumber><TransactionDate>31/05/2017</TransactionDate><ValueDate>31/05/2017</ValueDate><Amount>3800</Amount><Narration>HEAD QUATERS</Narration><TransactionType>CR</TransactionType><BalanceAfterTransaction>57007402.16</BalanceAfterTransaction></TransactionItems></ViewStatementResponse>]]></AccountStatementResult>
      </AccountStatementResponse>
   </soap:Body>
</soap:Envelope>

请问我该怎么做?

[XmlRoot("ViewStatementResponse")]
public class Model
{
    [XmlElement("OpeningBalance")]
    public string OpeningBalance { get; set; }

    [XmlElement("ClosingBalance")]
    public string ClosingBalance { get; set; }

    [XmlElement("TransactionItems")]
    public List<TransactionDetails> TransactionItems { get; set; } 
}

public class TransactionDetails
{
    [XmlElement("RefNumber")]
    public string RefNumber { get; set; }

    [XmlElement("TransactionDate")]
    public string TransactionDate { get; set; }

    [XmlElement("ValueDate")]
    public string ValueDate { get; set; }

    [XmlElement("Amount")]
    public string Amount { get; set; }

    [XmlElement("Narration")]
    public string Narration { get; set; }

    [XmlElement("TransactionType")]
    public string TransactionType { get; set; }

    [XmlElement("BalanceAfterTransaction")]
    public string BalanceAfterTransaction { get; set; }
}

我正在使用它,但它没有返回错误。 我无法做到。我是xml.please help

的新手

1 个答案:

答案 0 :(得分:2)

作为初学者,以下内容确实可以读取问题中给出的XML:

var soap = XDocument.Parse(response); // response is the XML as given
var data = soap.Descendants("{http://formalityzues.com/}AccountStatementResult").First();
var reader = new StringReader(data.Value);
var serializer = new XmlSerializer(typeof(Model));
var model = serializer.Deserialize(reader) as Model;

有关工作示例,请参阅以下小提琴:https://dotnetfiddle.net/fvYYqD