클래스 객체를 xml 문서로 직렬화하는 방법

user235973457

나는 당신에게서 해결책을 찾길 바랍니다. 내가 필요한 것은 ValidatorList 클래스 객체를 xml 문서로 직렬화하는 것입니다. 어떻게하나요?

나는 이렇게 시도했다 :

XmlSerializer _serializer = new XmlSerializer(list); 

하지만 여러 클래스가있는 목록에 대해 xml을 출력하는 방법을 모르겠습니다.

씨#

_list= new ListVal();
 Type _type = typeof(ras);

 _list.Add(new RequiredField
                    {
                      Property = _type.GetProperty("CustRef")
                    }.Add(new AsciiVal()));
_list.Add(new RequiredField
                  {
                    Property = _type.GetProperty("ctr")
                  }.Add(new StringLengthVal
                          {
                            min= 3,
                            max= 3
                          }));

[Serializable]
 public class Field
 {
public Field Next
{
  get;
  set;
}

public Field TypeName
{
  get;
  set;
}

    public Field PropertyName
  {
  get;
  set;
}
}

public class RequiredField : Field
{
//TODO
 }

public class AsciiVal: Field
 {
//TODO
  }

public class StringLengthVal: Field
 {
//TODO
}

 public class ListVal: List<Field>
 {
//TODO
  }
Jamiec

비슷한 것이 있지만 원하는 Xml이 아닙니다. 실제로 아래에 생성 된 Xml이 당신이 가지고있는 것보다 조금 더 의미가 있음을 알게 될 것입니다.

시작하려면 System.Xml.Serialization네임 스페이스의 속성을 사용하여 직렬화 및 역 직렬화를 제어합니다 . 몇 가지 유용한 정보는 다음과 같습니다.

그래서 나는 당신의 코드와 거의 일치하는 코드를 조롱했습니다. 직렬 변환기에 Xml을 배치하는 방법을 알려주는 몇 가지 특성이 추가되었습니다.

[XmlInclude(typeof(AsciiValidator))]
[XmlInclude(typeof(RequiredValidator))]
[XmlInclude(typeof(StringLengthValidator))]
public class FieldValidator
{
    [XmlElement("Next")]
    public FieldValidator Next
    {
    get;
    set;
    }

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

public class AsciiValidator: FieldValidator
{
}

public class RequiredValidator: FieldValidator
{
}

public class StringLengthValidator: FieldValidator
{
    [XmlElement]
    public int MinLength{get;set;}
    [XmlElement]
    public int MaxLength{get;set;}
}

[XmlRoot("ValidatorList")]
public class ValidatorList : List<FieldValidator>
{    
}

관심 장소 모든 클래스 상속 FieldValidator은 사용하여 알려진 유형 목록에 추가되어야 XmlIncludeAttribute직렬화 기가 이들을 어떻게 처리할지 알 수 있습니다)

그런 다음 예제 개체 맵을 만들었습니다.

var test = new ValidatorList();
test.Add(
            new RequiredValidator()
                {
                    PropertyName="CustRef",
                    Next = new AsciiValidator()
                });            
test.Add(
            new RequiredValidator()
                {
                    PropertyName="CurrencyIndicator",
                        Next = new StringLengthValidator(){
                            MinLength=3,
                            MaxLength = 10
                        }
                });

마지막으로 직렬화에 직렬화 (및 결과를 콘솔에 출력)하도록 지시했습니다.

var ser = new XmlSerializer(typeof(ValidatorList));
ser.Serialize(Console.Out,test);

결과는 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<ValidatorList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <FieldValidator xsi:type="RequiredValidator">
    <Next xsi:type="AsciiValidator" />
    <PropertyName>CustRef</PropertyName>
  </FieldValidator>
  <FieldValidator xsi:type="RequiredValidator">
    <Next xsi:type="StringLengthValidator">
      <MinLength>3</MinLength>
      <MaxLength>10</MaxLength>
    </Next>
    <PropertyName>CurrencyIndicator</PropertyName>
  </FieldValidator>
</ValidatorList>

당신이 원하는 곳에서 백만 마일 떨어진 곳이 아닙니다. 특정 방식으로 특정 항목을 출력해야 할 필요가 있습니다 (예 : xsi:typeserializer에게 객체 맵으로 역 직렬화하는 방법을 알려줍니다). 이것이 당신에게 좋은 출발이되기를 바랍니다.

다음은 실제 작동하는 예입니다. http://rextester.com/OXPOB95358

DeserializeXmlSerializer 에서 메서드를 호출하여 역 직렬화를 수행 할 수 있습니다 .

예를 들어 xml이 문자열에있는 경우 :

var ser = new XmlSerializer(typeof(ValidatorList));
var test = "<..../>" // Your Xml
var xmlReader = XmlReader.Create(new StringReader(test));
var validatorList = (ValidatorList)ser.Deserialize(xmlReader);

데이터가 기존 리더의 Stream에 있는지 또는 파일에 저장되는지에 따라 다른 입력을받는 Deserialize의 많은 재정의가 있습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

직렬화 가능한 객체의 배열로 클래스를 역 직렬화하는 방법

분류에서Dev

클래스 문자열 값으로 개체를 역 직렬화하는 방법

분류에서Dev

XML로 직렬화 할 때 선택적으로 클래스 멤버를 제외하는 방법

분류에서Dev

XML로 직렬화 할 때 선택적으로 클래스 멤버를 제외하는 방법

분류에서Dev

JSON으로 직렬화하는 동안 객체 내부에 클래스를 넣는 방법

분류에서Dev

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

분류에서Dev

XML 직렬화에 클래스 독립 태그를 추가하는 방법

분류에서Dev

객체를 직렬화하고 원래 객체와 동일한 클래스로 다시 캐스팅하는 방법

분류에서Dev

wcf 서비스가 클래스를 직렬화하도록하는 방법

분류에서Dev

C #에서 XML을 개체로 역 직렬화하는 방법

분류에서Dev

Javascript에서 클래스 객체를 초기화하는 방법

분류에서Dev

JQuery-XML 객체를 클래스 유형으로 역 직렬화?

분류에서Dev

정적 클래스 변수를 JSON으로 직렬화하는 Pythonic 방법

분류에서Dev

모델 클래스 데이터를 json으로 직렬화하는 방법

분류에서Dev

Jackson에서 추상 클래스를 역 직렬화하는 방법

분류에서Dev

클래스에서 NSDictionary를 직렬화하는 방법-Swift 구현

분류에서Dev

C # 객체를 XML 파일로 직렬화하는 방법 배우기-작동하지 않는 이유

분류에서Dev

XML 문자열을 클래스로 역 직렬화 할 때 새 xml 키를 보존하고 일부 값을 수정 한 다음 다시 직렬화하는 방법

분류에서Dev

클래스 이름을 루트 요소로 사용하여 C # 클래스를 직렬화하는 방법

분류에서Dev

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

분류에서Dev

내 XML 행을 C # 개체로 직렬화하는 방법

분류에서Dev

JAX-B를 사용하여 XML에서 선택한 클래스의 객체 (다형성)를 읽는 방법

분류에서Dev

Silverlight를 사용하여 XML을 클래스로 직렬화

분류에서Dev

C #에서 클래스 개체를 JSON 문자열로 직렬화하는 동안 키 이름을 동적으로 설정하는 방법

분류에서Dev

직렬 명명으로 클래스 객체를 동적으로 생성하는 방법은 무엇입니까?

분류에서Dev

기본 클래스이고 4 개의 파생 클래스가있는 개체를 XML 직렬화하는 방법

분류에서Dev

여러 클래스가있는 클래스를 사용하여 XML로 직렬화

분류에서Dev

웹 서비스에서 XML을 역 직렬화하는 방법

분류에서Dev

XML 역 / 직렬화를 테스트하는 방법

Related 관련 기사

  1. 1

    직렬화 가능한 객체의 배열로 클래스를 역 직렬화하는 방법

  2. 2

    클래스 문자열 값으로 개체를 역 직렬화하는 방법

  3. 3

    XML로 직렬화 할 때 선택적으로 클래스 멤버를 제외하는 방법

  4. 4

    XML로 직렬화 할 때 선택적으로 클래스 멤버를 제외하는 방법

  5. 5

    JSON으로 직렬화하는 동안 객체 내부에 클래스를 넣는 방법

  6. 6

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

  7. 7

    XML 직렬화에 클래스 독립 태그를 추가하는 방법

  8. 8

    객체를 직렬화하고 원래 객체와 동일한 클래스로 다시 캐스팅하는 방법

  9. 9

    wcf 서비스가 클래스를 직렬화하도록하는 방법

  10. 10

    C #에서 XML을 개체로 역 직렬화하는 방법

  11. 11

    Javascript에서 클래스 객체를 초기화하는 방법

  12. 12

    JQuery-XML 객체를 클래스 유형으로 역 직렬화?

  13. 13

    정적 클래스 변수를 JSON으로 직렬화하는 Pythonic 방법

  14. 14

    모델 클래스 데이터를 json으로 직렬화하는 방법

  15. 15

    Jackson에서 추상 클래스를 역 직렬화하는 방법

  16. 16

    클래스에서 NSDictionary를 직렬화하는 방법-Swift 구현

  17. 17

    C # 객체를 XML 파일로 직렬화하는 방법 배우기-작동하지 않는 이유

  18. 18

    XML 문자열을 클래스로 역 직렬화 할 때 새 xml 키를 보존하고 일부 값을 수정 한 다음 다시 직렬화하는 방법

  19. 19

    클래스 이름을 루트 요소로 사용하여 C # 클래스를 직렬화하는 방법

  20. 20

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

  21. 21

    내 XML 행을 C # 개체로 직렬화하는 방법

  22. 22

    JAX-B를 사용하여 XML에서 선택한 클래스의 객체 (다형성)를 읽는 방법

  23. 23

    Silverlight를 사용하여 XML을 클래스로 직렬화

  24. 24

    C #에서 클래스 개체를 JSON 문자열로 직렬화하는 동안 키 이름을 동적으로 설정하는 방법

  25. 25

    직렬 명명으로 클래스 객체를 동적으로 생성하는 방법은 무엇입니까?

  26. 26

    기본 클래스이고 4 개의 파생 클래스가있는 개체를 XML 직렬화하는 방법

  27. 27

    여러 클래스가있는 클래스를 사용하여 XML로 직렬화

  28. 28

    웹 서비스에서 XML을 역 직렬화하는 방법

  29. 29

    XML 역 / 직렬화를 테스트하는 방법

뜨겁다태그

보관