XML을 List <Object>로 deserialize하는 방법

노비 안 기독교

반환 값이 XML 인 WCF를 만들려고합니다. xml 파일을 객체로 deserialize하려고 할 때 오류가 있습니다.

이것은 파일을 deserialize하는 내 코드

내 컨트롤러

//serialize request to wcf//    
var requestXML = Lib.Serializer.ObjectSerializer.Serialize(request);
//get response from wcf//
var XMLResult = Lib.Net.Http.Post(requestXML,"http://localhost:53721/RoomRate.svc/RoomRates", 60);
//deserialize xml file to object//
var response = Lib.Serializer.ObjectSerializer.Deserialize<List<RoomRatesResponses>>(XMLResult);

XML deserialize에 대한 내 클래스

public static T Deserialize<T>(string xml)
{
    T result;
    XmlSerializer ser = new XmlSerializer(typeof(T));
    using (TextReader tr = new StringReader(xml))
    {
        result = (T)ser.Deserialize(tr);
    }
    return result;
}

내 개체 모델

public class RoomRatesResponses
{
    public List<RoomRateResponse> ListRoomRateResponse { get; set; }

    public RoomRatesResponses()
    {
        ListRoomRateResponse = new List<RoomRateResponse>();
    }
}

public class RoomRateResponse
{
    public string ErrorMessage { get; set; }
    public bool OperationSuccess { get; set; }
    public int Allotment { get; set; }
    public bool Breakfast { get; set; }
    public DateTime CheckInDate { get; set; }
    public bool CloseSelling { get; set; }
    public double CommissionPct { get; set; }
    public string CurrCode { get; set; }
    public bool FreeSell { get; set; }
    public int RoomRateId { get; set; }
    public string RoomType { get; set; }
    public double SingleRate { get; set; }
    public double TripleRate { get; set; }
    public double TwinDoubleRate { get; set; }
}

내 XML을 deserialize하면 다음과 같은 오류가 발생합니다.

<ArrayOfRoomRateResult xmlns=''>예상되지 않았습니다. 설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 내용은 스택 추적을 검토하십시오.

예외 세부 정보 : System.InvalidOperationException: <ArrayOfRoomRateResult xmlns=''>예상하지 못했습니다.

내 xml 파일을 어떻게 deseralize 할 수 있습니까 ??

    <?xml version="1.0" encoding="utf-8"?>
<ArrayOfRoomRateResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                       xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <RoomRateResult>
    <OperationSuccess>true</OperationSuccess>
    <ErrorMessage/>
    <RoomRateId>1170</RoomRateId>
    <RoomType>superior</RoomType>
    <RoomTypeID>150</RoomTypeID>
    <Breakfast>true</Breakfast>
    <CheckInDate>2014-01-01T00:00:00</CheckInDate>
    <CurrCode>IDR</CurrCode>
    <SingleRate>450000.0000</SingleRate>
    <TwinDoubleRate>450000.0000</TwinDoubleRate>
    <TripleRate>750000.0000</TripleRate>
    <CommissionPct>15.00</CommissionPct>
    <Allotment>25</Allotment>
    <FreeSell>true</FreeSell>
    <CloseSelling>false</CloseSelling>
    <CancellationPolicy/>
  </RoomRateResult>
  <RoomRateResult>
    <OperationSuccess>true</OperationSuccess>
    <ErrorMessage/>
    <RoomRateId>1171</RoomRateId>
    <RoomType>superior</RoomType>
    <RoomTypeID>150</RoomTypeID>
    <Breakfast>true</Breakfast>
    <CheckInDate>2014-01-02T00:00:00</CheckInDate>
    <CurrCode>IDR</CurrCode>
    <SingleRate>450000.0000</SingleRate>
    <TwinDoubleRate>450000.0000</TwinDoubleRate>
    <TripleRate>750000.0000</TripleRate>
    <CommissionPct>15.00</CommissionPct>
    <Allotment>22</Allotment>
    <FreeSell>false</FreeSell>
    <CloseSelling>false</CloseSelling>
    <CancellationPolicy/>
  </RoomRateResult>
  <RoomRateResult>
    <OperationSuccess>true</OperationSuccess>
    <ErrorMessage/>
    <RoomRateId>1177</RoomRateId>
    <RoomType>deluxe</RoomType>
    <RoomTypeID>151</RoomTypeID>
    <Breakfast>false</Breakfast>
    <CheckInDate>2014-01-01T00:00:00</CheckInDate>
    <CurrCode>IDR</CurrCode>
    <SingleRate>600000.0000</SingleRate>
    <TwinDoubleRate>600000.0000</TwinDoubleRate>
    <TripleRate>850000.0000</TripleRate>
    <CommissionPct>25.00</CommissionPct>
    <Allotment>11</Allotment>
    <FreeSell>false</FreeSell>
    <CloseSelling>false</CloseSelling>
    <CancellationPolicy>
      <Cancellation>
        <CancellationPolicyID>34</CancellationPolicyID>
        <ValidFrom>2014-01-01T00:00:00</ValidFrom>
        <ValidTo>2014-01-31T00:00:00</ValidTo>
        <ValidDays>YYYYYYY</ValidDays>
        <ChargeTypeId>1</ChargeTypeId>
        <CancellationCharge>1.0000</CancellationCharge>
        <DayBeforeCheckIn>7</DayBeforeCheckIn>
      </Cancellation>
    </CancellationPolicy>
  </RoomRateResult>
  <RoomRateResult>
    <OperationSuccess>true</OperationSuccess>
    <ErrorMessage/>
    <RoomRateId>1178</RoomRateId>
    <RoomType>deluxe</RoomType>
    <RoomTypeID>151</RoomTypeID>
    <Breakfast>false</Breakfast>
    <CheckInDate>2014-01-02T00:00:00</CheckInDate>
    <CurrCode>IDR</CurrCode>
    <SingleRate>500000.0000</SingleRate>
    <TwinDoubleRate>500000.0000</TwinDoubleRate>
    <TripleRate>750000.0000</TripleRate>
    <CommissionPct>25.00</CommissionPct>
    <Allotment>22</Allotment>
    <FreeSell>false</FreeSell>
    <CloseSelling>false</CloseSelling>
    <CancellationPolicy>
      <Cancellation>
        <CancellationPolicyID>34</CancellationPolicyID>
        <ValidFrom>2014-01-01T00:00:00</ValidFrom>
        <ValidTo>2014-01-31T00:00:00</ValidTo>
        <ValidDays>YYYYYYY</ValidDays>
        <ChargeTypeId>1</ChargeTypeId>
        <CancellationCharge>1.0000</CancellationCharge>
        <DayBeforeCheckIn>7</DayBeforeCheckIn>
      </Cancellation>
    </CancellationPolicy>
  </RoomRateResult>
</ArrayOfRoomRateResult>
Abhinav

다음은 문제를 해결하는 데 필요한 더미 코드입니다. 여기서 직렬화가 작동하는 방식을 보여줍니다. 역 직렬화를 위해 역 직렬화를 수행해야합니다. 클래스 및 변수 이름을 확인하십시오.

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Xml.Serialization;

namespace Code.Without.IDE
{
    //http://stackoverflow.com/questions/20697928/how-to-deserialize-xml-to-listobject
    public class Dummy
    {
        private static void Main()
        {
            List<RoomRateResult> ArrayOfRoomRateResult = new List<RoomRateResult>();
            RoomRateResult rs1 = new RoomRateResult
                                        {
                                            ErrorMessage = string.Empty,
                                            OperationSuccess = true,
                                            Allotment = 10,
                                            Breakfast = true,
                                            CheckInDate = DateTime.Now,
                                            CloseSelling = false,
                                            CommissionPct = 3.0d,
                                            CurrCode = "USD",
                                            FreeSell = true,
                                            RoomRateId = 100,
                                            RoomType = "Mega",
                                            SingleRate = 95d,
                                            TripleRate = 150d,
                                            TwinDoubleRate = 150d
                                        };

            RoomRateResult rs2 = new RoomRateResult
                                        {
                                            ErrorMessage = string.Empty,
                                            OperationSuccess = true,
                                            Allotment = 12,
                                            Breakfast = true,
                                            CheckInDate = DateTime.Now,
                                            CloseSelling = false,
                                            CommissionPct = 2.0d,
                                            CurrCode = "USD",
                                            FreeSell = true,
                                            RoomRateId = 110,
                                            RoomType = "Mega",
                                            SingleRate = 90d,
                                            TripleRate = 140d,
                                            TwinDoubleRate = 150d
                                        };

            ArrayOfRoomRateResult.Add(rs1);
            ArrayOfRoomRateResult.Add(rs2);

            XmlSerializer ser = new XmlSerializer(typeof(List<RoomRateResult>));
            TextWriter writer = new StreamWriter("serl.xml");
            ser.Serialize(writer, ArrayOfRoomRateResult);
            writer.Flush();
            writer.Close();
        }
    }

    [Serializable]
    public class RoomRateResult
    {
        public string ErrorMessage { get; set; }
        public bool OperationSuccess { get; set; }
        public int Allotment { get; set; }
        public bool Breakfast { get; set; }
        public DateTime CheckInDate { get; set; }
        public bool CloseSelling { get; set; }
        public double CommissionPct { get; set; }
        public string CurrCode { get; set; }
        public bool FreeSell { get; set; }
        public int RoomRateId { get; set; }
        public string RoomType { get; set; }
        public double SingleRate { get; set; }
        public double TripleRate { get; set; }
        public double TwinDoubleRate { get; set; }
    }
}

직렬화는 다음을 제공합니다.

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfRoomRateResult xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <RoomRateResult>
    <ErrorMessage />
    <OperationSuccess>true</OperationSuccess>
    <Allotment>10</Allotment>
    <Breakfast>true</Breakfast>
    <CheckInDate>2013-12-19T23:11:08.2340815-08:00</CheckInDate>
    <CloseSelling>false</CloseSelling>
    <CommissionPct>3</CommissionPct>
    <CurrCode>USD</CurrCode>
    <FreeSell>true</FreeSell>
    <RoomRateId>100</RoomRateId>
    <RoomType>Mega</RoomType>
    <SingleRate>95</SingleRate>
    <TripleRate>150</TripleRate>
    <TwinDoubleRate>150</TwinDoubleRate>
  </RoomRateResult>
  <RoomRateResult>
    <ErrorMessage />
    <OperationSuccess>true</OperationSuccess>
    <Allotment>12</Allotment>
    <Breakfast>true</Breakfast>
    <CheckInDate>2013-12-19T23:11:08.2380815-08:00</CheckInDate>
    <CloseSelling>false</CloseSelling>
    <CommissionPct>2</CommissionPct>
    <CurrCode>USD</CurrCode>
    <FreeSell>true</FreeSell>
    <RoomRateId>110</RoomRateId>
    <RoomType>Mega</RoomType>
    <SingleRate>90</SingleRate>
    <TripleRate>140</TripleRate>
    <TwinDoubleRate>150</TwinDoubleRate>
  </RoomRateResult>
</ArrayOfRoomRateResult>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Spring Controller : json을 Map <Object, Object>로 deserialize하는 방법

분류에서Dev

Json을 Dictionary <String, List <String >>으로 deserialize하는 방법

분류에서Dev

Dictionary <string, List <Custom Type >>을 XML로 직렬화하는 방법

분류에서Dev

Java에서 List <Object>를 List <Dog>로 변환하는 방법

분류에서Dev

C # List <object []>를 List <customClass>로 캐스팅하는 방법

분류에서Dev

"Object {System.Collections.Generic.List <object>}"유형을 처리하는 방법

분류에서Dev

key가 XML 노드 이름 일 때 xml을 Dictionary로 deserialize하는 방법은 무엇입니까?

분류에서Dev

List <Object>를 Json으로 변환하는 방법 | 씨#

분류에서Dev

Java List <Object []>를 String []으로 변환하는 방법

분류에서Dev

Scala에서 Circe를 사용하여 중첩 된 json을 List [Object]로 디코딩하는 방법

분류에서Dev

Streams 및 Lambda Java8을 사용하여 List <Object []>를 Map <String, BigInteger>로 변환하는 방법

분류에서Dev

applicationContext.xml을로드하는 방법

분류에서Dev

XML을 Java로 변환하는 방법

분류에서Dev

HTML로 XML을 작성하는 방법

분류에서Dev

JAXB-객체 목록 (List <Object>)을 반환하는 방법

분류에서Dev

isinstance (object, list)에서 목록을 인쇄하는 방법

분류에서Dev

XML Powershell system.object [] 배열을 CSV 파일로 내보내는 방법

분류에서Dev

Flutter에서 List <Asset>을 List <File>로 변환하는 방법

분류에서Dev

Flutter에서 SharedPreferences로 List <List <String >>을 저장하는 방법

분류에서Dev

List as String을 API에서 List of String으로 변환하는 방법

분류에서Dev

XStream Library를 통해 xml을 ArrayList를 포함하는 Java Object로 변환하는 방법은 무엇입니까?

분류에서Dev

Dart에서 List <List <Map <String, String >>>을 List <List <CustomObject >>로 변환하는 방법

분류에서Dev

c #-List <string>의 항목을 List <object>에 넣는 방법

분류에서Dev

조건부로 XML 파일을 C # List <T>로 처리하는 방법은 무엇입니까?

분류에서Dev

List (Of String)를 Object ()로 변환하는 방법은 무엇입니까?

분류에서Dev

사용자 지정 개체를 List <object>로 캐스팅하는 방법

분류에서Dev

내 y.Value를 List <Dictionary <string, object >>로 캐스팅하는 방법

분류에서Dev

<List <List <StrongType.String >>을 List <string>으로 변환하는 효율적인 방법

분류에서Dev

Android ListView에서 list_item_event.xml을로드하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Spring Controller : json을 Map <Object, Object>로 deserialize하는 방법

  2. 2

    Json을 Dictionary <String, List <String >>으로 deserialize하는 방법

  3. 3

    Dictionary <string, List <Custom Type >>을 XML로 직렬화하는 방법

  4. 4

    Java에서 List <Object>를 List <Dog>로 변환하는 방법

  5. 5

    C # List <object []>를 List <customClass>로 캐스팅하는 방법

  6. 6

    "Object {System.Collections.Generic.List <object>}"유형을 처리하는 방법

  7. 7

    key가 XML 노드 이름 일 때 xml을 Dictionary로 deserialize하는 방법은 무엇입니까?

  8. 8

    List <Object>를 Json으로 변환하는 방법 | 씨#

  9. 9

    Java List <Object []>를 String []으로 변환하는 방법

  10. 10

    Scala에서 Circe를 사용하여 중첩 된 json을 List [Object]로 디코딩하는 방법

  11. 11

    Streams 및 Lambda Java8을 사용하여 List <Object []>를 Map <String, BigInteger>로 변환하는 방법

  12. 12

    applicationContext.xml을로드하는 방법

  13. 13

    XML을 Java로 변환하는 방법

  14. 14

    HTML로 XML을 작성하는 방법

  15. 15

    JAXB-객체 목록 (List <Object>)을 반환하는 방법

  16. 16

    isinstance (object, list)에서 목록을 인쇄하는 방법

  17. 17

    XML Powershell system.object [] 배열을 CSV 파일로 내보내는 방법

  18. 18

    Flutter에서 List <Asset>을 List <File>로 변환하는 방법

  19. 19

    Flutter에서 SharedPreferences로 List <List <String >>을 저장하는 방법

  20. 20

    List as String을 API에서 List of String으로 변환하는 방법

  21. 21

    XStream Library를 통해 xml을 ArrayList를 포함하는 Java Object로 변환하는 방법은 무엇입니까?

  22. 22

    Dart에서 List <List <Map <String, String >>>을 List <List <CustomObject >>로 변환하는 방법

  23. 23

    c #-List <string>의 항목을 List <object>에 넣는 방법

  24. 24

    조건부로 XML 파일을 C # List <T>로 처리하는 방법은 무엇입니까?

  25. 25

    List (Of String)를 Object ()로 변환하는 방법은 무엇입니까?

  26. 26

    사용자 지정 개체를 List <object>로 캐스팅하는 방법

  27. 27

    내 y.Value를 List <Dictionary <string, object >>로 캐스팅하는 방법

  28. 28

    <List <List <StrongType.String >>을 List <string>으로 변환하는 효율적인 방법

  29. 29

    Android ListView에서 list_item_event.xml을로드하는 방법은 무엇입니까?

뜨겁다태그

보관