이 C # XML 역 직렬화 코드의 문제점은 무엇입니까?

coach_rob

나는 내가 찾을 수있는 한 많은 기사를 읽었고, 나는 전에 이런 식으로 직렬화를 해봤지만 내 인생에서 왜 다음이 제대로 작동하지 않는지 알 수 없다.

도움을 주셔서 감사합니다.

이 코드가 주어지면 :

deseralized 응답을위한 POCO 클래스 :

[XmlRoot]
public class MyResponseClass
{
    [XmlElement("response")]
    public Response Response { get; set; }
}

[XmlRoot]
public class Response
{
    [XmlElement("error")]
    public Error Error { get; set; }

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

[XmlRoot]
public class Error
{
    [XmlElement("error_msg")]
    public string ErrorMessage { get; set; }
}

요청 및 응답 처리 코드 :

var webClient = _webClientWrapperFactory.Create();
var url = "https://serviceendpoint.com";
var responseString = webClient.DownloadString(url);

MyResponseClass result;
var serializer = new XmlSerializer(typeof(MyResponseClass));
using (var reader = new StringReader(responseString))
{
result = (MyResponseClass) serializer.Deserialize(reader);
}
return result;

다음 응답을 반환합니다.

<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><response><error><error_msg>CANNOT_LOGIN</error_msg></error></response>

역 직렬화 시도시 다음 오류가 발생합니다.

System.Xml.dll에서 'System.InvalidOperationException'유형의 예외가 발생했지만 사용자 코드에서 처리되지 않았습니다.

추가 정보 : XML 문서 (1, 57)에 오류가 있습니다.

편집 : 내부 예외 :

{"<response xmlns=''> was not expected."}
15ee8f99-57ff-4f92-890c-b56153

빠른 인스턴스를 MyResponseClass만들고 직렬화했습니다.

<?xml version="1.0" encoding="utf-16"?>
<MyResponseClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <response>
    <error>
      <error_msg>error message text</error_msg>
    </error>
    <sid>(sid string)</sid>
  </response>
</MyResponseClass>

그래서 당신의 XML은 MyResponseClass. 내가 사용한 직렬화 코드는 다음과 같습니다.

MyResponseClass result1 = new MyResponseClass
{
    Response = new Response
    {
        Sid = "(sid string)",
        Error = new Error
        {
            ErrorMessage = "error message text"
        }
    }
};

var serializer = new XmlSerializer(typeof(MyResponseClass));
string serialized = "";

using (StringWriter textWriter = new StringWriter())
{
    serializer.Serialize(textWriter, result1);
    serialized = textWriter.ToString();
}

그러나 그것은 아마도 당신이 원하는 것이 아닐 것입니다.

질문에있는 XML을 고수 하려면 XML 루트로서를 모두 소문자로 MyResponseClass지정하지 않고 지정해야합니다 Response.

[XmlRoot("response")]
public class Response
{
    [XmlElement("error")]
    public Error Error { get; set; }

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

...

var responseString = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><response><error><error_msg>CANNOT_LOGIN</error_msg></error></response>";

var serializer2 = new XmlSerializer(typeof(Response));

//using (StringWriter textWriter = new StringWriter())
//{
//    serializer2.Serialize(textWriter, result1.Response);
//    responseString = textWriter.ToString();
//}

Response result;
using (var reader = new StringReader(responseString))
{
    result = (Response)serializer2.Deserialize(reader);
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C # Xml 역 직렬화, XML의 데이터 무시

분류에서Dev

C #을 사용하여 XML 파일에서 데이터를 직렬화 및 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

C # XML 역 직렬화 문제

분류에서Dev

잭슨 역 직렬화 XML은 같은 이름의 필드

분류에서Dev

XML 역 직렬화 C #, 개행 문자 \ n이 \\ n으로 바뀝니다.

분류에서Dev

C #의 목록이있는 개체에 XML 역 직렬화

분류에서Dev

Java에서 XML 노드를 pojo로 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

단일 노드로 XML을 역 직렬화하기 위해 직렬화 가능한 클래스를 만드는 방법은 무엇입니까?

분류에서Dev

이 간단한 #define C 코드의 문제점은 무엇입니까?

분류에서Dev

이 간단한 코드 (목표 c)의 문제점은 무엇입니까?

분류에서Dev

이 C ++ 연결 목록 코드의 문제점은 무엇입니까?

분류에서Dev

HCF를 찾기위한이 C 코드의 문제점은 무엇입니까?

분류에서Dev

protobuf 역 직렬화가 빈 페이로드를 제공하는 이유는 무엇입니까?

분류에서Dev

C에서이 힙 정렬 구현의 문제점은 무엇입니까?

분류에서Dev

문자열 (구문과 같은 XML 노드)을 C # 개체로 역 직렬화

분류에서Dev

여러 개체를 단일 XML 파일로 직렬화 / 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

XML을 객체로 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

XML 배열 항목을 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

UPW C #의 Web API에서 JSON 배열을 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

목록의 바이너리 파일을 역 직렬화하고 읽는 방법은 무엇입니까?

분류에서Dev

JSON 데이터를 모델 객체의 배열로 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

동일한 이름의 새 개체로 개체를 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

직렬화 / 역 직렬화 후에 UIColor의 값이 변경되는 이유는 무엇입니까?

분류에서Dev

C #에서 파생 된 개체를이 XML로 직렬화하는 방법은 무엇입니까?

분류에서Dev

이 AWS API를 F #으로 직렬화 / 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

c에서 연결된 목록 코드를 사용하는이 삽입 정렬의 문제점은 무엇입니까?

분류에서Dev

XML 노드의 값을 기반으로 자식 개체를 부모 목록 (예 : List <Parent>)으로 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

C #에서 역 직렬화하는 동안 JSON 문자열에없는 속성의 초기화를 방지하는 방법은 무엇입니까?

분류에서Dev

기본 직렬화와 사용자 정의 직렬화의 차이점은 무엇입니까?

Related 관련 기사

  1. 1

    C # Xml 역 직렬화, XML의 데이터 무시

  2. 2

    C #을 사용하여 XML 파일에서 데이터를 직렬화 및 역 직렬화하는 방법은 무엇입니까?

  3. 3

    C # XML 역 직렬화 문제

  4. 4

    잭슨 역 직렬화 XML은 같은 이름의 필드

  5. 5

    XML 역 직렬화 C #, 개행 문자 \ n이 \\ n으로 바뀝니다.

  6. 6

    C #의 목록이있는 개체에 XML 역 직렬화

  7. 7

    Java에서 XML 노드를 pojo로 역 직렬화하는 방법은 무엇입니까?

  8. 8

    단일 노드로 XML을 역 직렬화하기 위해 직렬화 가능한 클래스를 만드는 방법은 무엇입니까?

  9. 9

    이 간단한 #define C 코드의 문제점은 무엇입니까?

  10. 10

    이 간단한 코드 (목표 c)의 문제점은 무엇입니까?

  11. 11

    이 C ++ 연결 목록 코드의 문제점은 무엇입니까?

  12. 12

    HCF를 찾기위한이 C 코드의 문제점은 무엇입니까?

  13. 13

    protobuf 역 직렬화가 빈 페이로드를 제공하는 이유는 무엇입니까?

  14. 14

    C에서이 힙 정렬 구현의 문제점은 무엇입니까?

  15. 15

    문자열 (구문과 같은 XML 노드)을 C # 개체로 역 직렬화

  16. 16

    여러 개체를 단일 XML 파일로 직렬화 / 역 직렬화하는 방법은 무엇입니까?

  17. 17

    XML을 객체로 역 직렬화하는 방법은 무엇입니까?

  18. 18

    XML 배열 항목을 역 직렬화하는 방법은 무엇입니까?

  19. 19

    UPW C #의 Web API에서 JSON 배열을 역 직렬화하는 방법은 무엇입니까?

  20. 20

    목록의 바이너리 파일을 역 직렬화하고 읽는 방법은 무엇입니까?

  21. 21

    JSON 데이터를 모델 객체의 배열로 역 직렬화하는 방법은 무엇입니까?

  22. 22

    동일한 이름의 새 개체로 개체를 역 직렬화하는 방법은 무엇입니까?

  23. 23

    직렬화 / 역 직렬화 후에 UIColor의 값이 변경되는 이유는 무엇입니까?

  24. 24

    C #에서 파생 된 개체를이 XML로 직렬화하는 방법은 무엇입니까?

  25. 25

    이 AWS API를 F #으로 직렬화 / 역 직렬화하는 방법은 무엇입니까?

  26. 26

    c에서 연결된 목록 코드를 사용하는이 삽입 정렬의 문제점은 무엇입니까?

  27. 27

    XML 노드의 값을 기반으로 자식 개체를 부모 목록 (예 : List <Parent>)으로 역 직렬화하는 방법은 무엇입니까?

  28. 28

    C #에서 역 직렬화하는 동안 JSON 문자열에없는 속성의 초기화를 방지하는 방법은 무엇입니까?

  29. 29

    기본 직렬화와 사용자 정의 직렬화의 차이점은 무엇입니까?

뜨겁다태그

보관