2017-08-11 55 views
0

請將我的結果作爲字符串轉換爲字符串並將其轉換爲對象。我如何從字符串中刪除xml

這是字符串,我從我的服務越來越:

<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工作協助

+2

[反序列化字符串代替TextReader]可能的重複(https://stackoverflow.com/questions/2347642/deserialize-from-string-instead-textreader) –

+0

您是如何調用服務器的?提供的XML是一個SOAP響應 - 您是使用SOAP還是通過GET/POST獲取數據?除此之外,這應該與默認的XmlSerializer一起工作 - 可能會顯示您已經嘗試過的代碼? – ChrFin

回答

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