【问题标题】:How do i desrialize an xml from a string如何从字符串中反序列化 xml
【发布时间】:2018-01-19 12:22:05
【问题描述】:

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

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

 <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 的新手。请协助

【问题讨论】:

  • 你如何调用服务器?提供的 XML 是 SOAP 响应 - 您是使用 SOAP 还是通过 GET/POST 获取该数据?除此之外,这应该与默认的 XmlSerializer 一起使用 - 可能会显示您已经尝试过的代码?

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


【解决方案1】:

作为初学者,以下内容确实可以读取问题中给出的 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

【讨论】:

    猜你喜欢
    • 2013-01-16
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多