XML 역 직렬화 중에 잘못된 열거 형 값을 무시하는 방법은 무엇입니까?

플로리안

관련 xsd 파일에 의해 생성 된 클래스로 xml 문서를 역 직렬화하고 싶습니다. xml 파일의 내용을 제어 할 수 없습니다.

deserialization 중에 xml 문서의 enum 값이 xsd의 요구 사항을 충족하지 않기 때문에 예외가 발생합니다. 중단하는 대신 역 직렬화를 계속하고 이러한 오류에 대해 기본값을 사용하고 싶습니다. 이 동작을 수행 할 수있는 방법이 있습니까?


편집 : 설명을 위해 내가 달성하고자하는 것 : 디지털 송장에서 데이터를 읽고 싶습니다. 따라서 xml 파일의 생성은 일종의 블랙 박스이며 구조가 표준을 충족하더라도 flase 값을 포함 할 수 있습니다. 하지만 그렇다고해서 모든 가치가 그런 방식으로 결함이 있다는 뜻은 아닙니다. 예외로 인해 올바른 값을 읽을 수 없으므로 이러한 오류가 발생하면 어떻게 든 기본값을 삽입하여 deserialization이 완료되기를 원합니다.

값을 더 이상 사용되지 않는 것으로 표시하거나 XmlIgnore로 플래그를 지정하면 다음 xml에 올바른 값이 포함될 수 있으므로 작동하지 않습니다.

문제를 명확히하는 데 도움이 되었기를 바랍니다.


지금은 System.Xml.Serializationdll을 사용하고 있지만 원하는 동작을 달성하는 데 도움이 될 수있는 라이브러리를 구현할 의향이 있습니다.

예외는 다음과 같습니다.

"System.InvalidOperationException : 인스턴스 유효성 검사 오류 : 'x'는 xType에 대한 유효한 값이 아닙니다 .."

예외를 발생시키는 코드 :

XmlSerializer serializer = new xml.XmlSerializer(typeof(MyType));
MyType invoice = serializer.Deserialize(memoryStream) as MyType;

코드가별로 도움이되지 않는다는 것을 알고 있으므로 현재 문제가있는 열거 형을 추가하겠습니다.

public enum PaymentMeansCodeContentType
    {

        [System.Xml.Serialization.XmlEnumAttribute("10")]
        Item10,

        [System.Xml.Serialization.XmlEnumAttribute("20")]
        Item20,

        [System.Xml.Serialization.XmlEnumAttribute("30")]
        Item30,

        [System.Xml.Serialization.XmlEnumAttribute("48")]
        Item48,

        [System.Xml.Serialization.XmlEnumAttribute("49")]
        Item49,

        [System.Xml.Serialization.XmlEnumAttribute("57")]
        Item57,

        [System.Xml.Serialization.XmlEnumAttribute("58")]
        Item58,

        [System.Xml.Serialization.XmlEnumAttribute("59")]
        Item59,

        ZZZ,
    }

이들은 xsd 명령 줄 도구를 사용하여 자동 생성됩니다. https://docs.microsoft.com/de-de/dotnet/standard/serialization/xml-schema-definition-tool-xsd-exe

deserialize해야하는 xml은 '1'을 제공하므로 분명히 잘못된 값입니다. 그래도 xml에서 다른 유효한 값에 액세스하고 결함이있는 값을 나타내는 수단을 제공해야합니다.

플로리안

나는 여전히 내가 바라던 간단한 답을 찾을 수 없었지만 나를 위해 일하는 해결 방법을 찾았습니다. 가능한 값에 대해 XML 파일의 모든 열거 형을 미리 확인했습니다. XML이 열거 형과 일치하지 않으면 잘못된 값과 노드를 유효성 검사 결과 집합에 저장하고 xml을 열거 형 기본값으로 덮어 썼습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

공용 열거 형을 직렬화 / 역 직렬화하는 쉬운 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

dart에서 중첩 된 Tuple2 배열을 직렬화 / 역 직렬화하는 가장 좋은 방법은 무엇입니까 (List <List <Tuple2 >>)

분류에서Dev

열거 형 집합을 직렬화하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

JavaScriptSerializer. JSON에서 문자열 배열을 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

Windows Phone에서 JSON 문자열을 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

Haskell에서 매개 변수화 된 유형을 JSON으로 직렬화하는 방법은 무엇입니까?

분류에서Dev

dart / flutter에서 맵을 올바르게 직렬화 / 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

JSON을 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

Spring Boot JSON 열거 형 역 직렬화를 엄격하게 만들어 잘못된 값을 null로 자동 변환하지 않습니다.

분류에서Dev

JIL을 사용하여 매개 변수화 된 생성자로 유형을 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

System.Text.Json을 사용하여 모든`Nullable <T>`값 형식에 대해 빈 문자열을 null 값으로 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

Kotlinx 직렬화에서 "모든"유형을 직렬화하는 방법은 무엇입니까?

분류에서Dev

직렬화 된 형식을 통해 다른 입력 이름에서 값을 가져와 mysql에 삽입하는 방법은 무엇입니까?

분류에서Dev

중첩 된 객체 목록이있는 객체 목록을 JSON.NET에서 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

중첩 된 JSON을 직렬화하는 방법은 무엇입니까?

분류에서Dev

다른 유형으로 컬렉션을 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

C #에서 열거 형을 직렬화 할 때 어셈블리 ID 오류를 해결하는 방법은 무엇입니까?

분류에서Dev

맵에서 객체 값에 대한 유형 속성을 직렬화하는 방법은 무엇입니까?

분류에서Dev

셀형 배열에서 중복 행렬을 제거하는 방법은 무엇입니까?

분류에서Dev

Web API가 열거 형 목록을 잘못 역 직렬화합니다.

분류에서Dev

JSON 역 직렬화 중에 특정 필드를 무시하는 방법은 무엇입니까?

분류에서Dev

Json 키 중 하나에 점이 포함 된 경우 Json 직렬화를 위해 익명 유형을 선언하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    공용 열거 형을 직렬화 / 역 직렬화하는 쉬운 방법은 무엇입니까?

  2. 2

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

  3. 3

    dart에서 중첩 된 Tuple2 배열을 직렬화 / 역 직렬화하는 가장 좋은 방법은 무엇입니까 (List <List <Tuple2 >>)

  4. 4

    열거 형 집합을 직렬화하는 방법은 무엇입니까?

  5. 5

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

  6. 6

    JavaScriptSerializer. JSON에서 문자열 배열을 역 직렬화하는 방법은 무엇입니까?

  7. 7

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

  8. 8

    Windows Phone에서 JSON 문자열을 역 직렬화하는 방법은 무엇입니까?

  9. 9

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

  10. 10

    Haskell에서 매개 변수화 된 유형을 JSON으로 직렬화하는 방법은 무엇입니까?

  11. 11

    dart / flutter에서 맵을 올바르게 직렬화 / 역 직렬화하는 방법은 무엇입니까?

  12. 12

    JSON을 역 직렬화하는 방법은 무엇입니까?

  13. 13

    Spring Boot JSON 열거 형 역 직렬화를 엄격하게 만들어 잘못된 값을 null로 자동 변환하지 않습니다.

  14. 14

    JIL을 사용하여 매개 변수화 된 생성자로 유형을 역 직렬화하는 방법은 무엇입니까?

  15. 15

    System.Text.Json을 사용하여 모든`Nullable <T>`값 형식에 대해 빈 문자열을 null 값으로 역 직렬화하는 방법은 무엇입니까?

  16. 16

    Kotlinx 직렬화에서 "모든"유형을 직렬화하는 방법은 무엇입니까?

  17. 17

    직렬화 된 형식을 통해 다른 입력 이름에서 값을 가져와 mysql에 삽입하는 방법은 무엇입니까?

  18. 18

    중첩 된 객체 목록이있는 객체 목록을 JSON.NET에서 역 직렬화하는 방법은 무엇입니까?

  19. 19

    중첩 된 JSON을 직렬화하는 방법은 무엇입니까?

  20. 20

    다른 유형으로 컬렉션을 역 직렬화하는 방법은 무엇입니까?

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

    C #에서 열거 형을 직렬화 할 때 어셈블리 ID 오류를 해결하는 방법은 무엇입니까?

  25. 25

    맵에서 객체 값에 대한 유형 속성을 직렬화하는 방법은 무엇입니까?

  26. 26

    셀형 배열에서 중복 행렬을 제거하는 방법은 무엇입니까?

  27. 27

    Web API가 열거 형 목록을 잘못 역 직렬화합니다.

  28. 28

    JSON 역 직렬화 중에 특정 필드를 무시하는 방법은 무엇입니까?

  29. 29

    Json 키 중 하나에 점이 포함 된 경우 Json 직렬화를 위해 익명 유형을 선언하는 방법은 무엇입니까?

뜨겁다태그

보관