C # 직렬화를 사용하여 매우 사용자 지정 형식으로 직렬화하는 방법

스파르타쿠스

C #의 기본 직렬화 기능을 사용하여 다음 클래스를 직렬화하고 싶습니다.

public class DevicePolicy
{
    public enum SharingLevel
    {
        Unrestricted,
        Blocked
    }

    public SharingLevel SHARING_LEVEL = SharingLevel.Blocked;
    public bool REQUIRES_AUTHENTICATION = false;
    public List<string> MANAGED_LIST = new List<string>();
}

이에:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
  <string name="SHARING_LEVEL">BLOCKED</string>
  <boolean name="REQUIRES_AUTHENTICATION" value="false" />
  <set name="MANAGED_LIST">
    <string>blah</string>
  </set>
</map>

참고 : 변경할 수없는 다른 항목에 의해 사용되기 때문에 Xml의 모양을 제어 할 수 없습니다. 그래서 저는 이것을 정확히 일치시켜야합니다.

이 작업을 수행하는 데 어려움이 있으며 이러한 사용자 지정 형식으로 C #의 기본 제공 직렬화 작업을 수행하려는 경우 대신 내 자신의 SerializeXml 및 DeserializeXml 메서드를 작성하는 것이 더 나은지 궁금해하기 시작했습니다.

누군가가 이것을하는 쉬운 방법을 알고 있다면 정말 도움을 주시면 감사하겠습니다.

스콧 체임벌린

사용자 정의가 필요한 경우 총알을 물고 클래스 IXmlSerializable가 사용자 정의 직렬화를 수행하도록 구현 해야 할 수 있습니다. 다음은 SharingLevel객체 를 직렬화하는 예제입니다 . 나머지는 사용자가 수행하도록 남겨 둡니다.

public class DevicePolicy : IXmlSerializable
{
    public enum SharingLevel
    {
        Unrestricted,
        Blocked
    }

    public SharingLevel SHARING_LEVEL = SharingLevel.Blocked;
    public bool REQUIRES_AUTHENTICATION = false;
    public List<string> MANAGED_LIST = new List<string>();

    public XmlSchema GetSchema()
    {
        return null;
    }

    public void ReadXml(XmlReader reader)
    {
        throw new NotImplementedException(); //TODO
    }

    public void WriteXml(XmlWriter writer)
    {
        //Root
        writer.WriteStartElement("map");

        //The element for "SharingLevel SHARING_LEVEL"
        writer.WriteStartElement("string");
        writer.WriteAttributeString("name", "SHARING_LEVEL");
        writer.WriteString(SHARING_LEVEL.ToString().ToUpperInvariant());
        writer.WriteEndElement();

        //The element for "bool REQUIRES_AUTHENTICATION"
        writer.WriteStartElement("boolean");
        throw new NotImplementedException(); //TODO
    }
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Newtonsoft.Json 라이브러리를 사용하여 문자열을 C #을 사용하여 사용자 지정 개체로 역 직렬화하는 방법

분류에서Dev

객체를 사용하지 않고 JSON으로 직렬화하는 방법

분류에서Dev

YamlDotNEt 및 C #의 사용자 지정 형식 클래스를 사용하여 중첩 된 YAML 역 직렬화

분류에서Dev

JSON 직렬화에 사용자 지정 포맷터를 사용하는 방법

분류에서Dev

Objective-C를 사용하여 JSON을 사용자 지정 개체로 역 직렬화

분류에서Dev

C # Content로 이미 직렬화 된 문자열을 직렬화하지 않는 방법

분류에서Dev

Spring Integration을 사용하여 JSON 직렬화를 기본값으로 설정하는 방법이 있습니까?

분류에서Dev

built_value 패키지를 사용하여 Map <String, dynamic>으로 직렬화하는 방법

분류에서Dev

YamlDotNet에서 직렬화 사용자 지정 형식을 지정하는 방법은 무엇입니까?

분류에서Dev

C #을 사용하여 개체를 직렬화하는 모범 사례 / 방법

분류에서Dev

JavaScriptSerializer를 사용하여 JSON을 튜플으로 역 직렬화하는 방법

분류에서Dev

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

분류에서Dev

C #에서 Newtonsoft를 사용하여 역 직렬화하는 방법

분류에서Dev

정수를 키로 사용하여 JSON을 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 사용자 정의 필드를 사용하여 객체를 JSON으로 직렬화하는 방법

분류에서Dev

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

분류에서Dev

readObject에 writeObject로부터를 사용하여 사용자 정의 직렬화

분류에서Dev

사용자 지정 목록을 JSON C #으로 직렬화

분류에서Dev

C #에서 int를 키로 사용하는 JSON 역 직렬화

분류에서Dev

그것은 (자바, 하나의 JVM)을 '로컬'은 Vert.x의 eventbus를 사용하는 경우 직렬화를 방지 할 수 있습니까?

분류에서Dev

생성자를 멤버 함수로 사용하는 C ++ (직렬화 용)

분류에서Dev

GSON을 사용하여 열거 형의 사용자 지정 역 직렬화

분류에서Dev

protobuf-net을 사용하여 사용자 정의 클래스를 기본 유형으로 직렬화

분류에서Dev

Newtonsoft.Json을 사용하여 C #에서 중첩 배열로 json을 역 직렬화하는 방법

분류에서Dev

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

분류에서Dev

PHP를 사용하여 배열 (배열에서 쿼리 문자열로)을 직렬화하는 방법

분류에서Dev

protobuf-net에서 주어진 유형을 직렬화 / 역 직렬화 할 때 사용할 사용자 정의 메소드를 지정하는 방법이 있습니까?

분류에서Dev

잭슨 직렬화에 날짜를 사용자 정의하는 방법, @JsonSerialize가 작동하지

분류에서Dev

C ++에서 템플릿 함수 직렬화 및 역 직렬화를 대칭 적으로 구현하는 방법

Related 관련 기사

  1. 1

    Newtonsoft.Json 라이브러리를 사용하여 문자열을 C #을 사용하여 사용자 지정 개체로 역 직렬화하는 방법

  2. 2

    객체를 사용하지 않고 JSON으로 직렬화하는 방법

  3. 3

    YamlDotNEt 및 C #의 사용자 지정 형식 클래스를 사용하여 중첩 된 YAML 역 직렬화

  4. 4

    JSON 직렬화에 사용자 지정 포맷터를 사용하는 방법

  5. 5

    Objective-C를 사용하여 JSON을 사용자 지정 개체로 역 직렬화

  6. 6

    C # Content로 이미 직렬화 된 문자열을 직렬화하지 않는 방법

  7. 7

    Spring Integration을 사용하여 JSON 직렬화를 기본값으로 설정하는 방법이 있습니까?

  8. 8

    built_value 패키지를 사용하여 Map <String, dynamic>으로 직렬화하는 방법

  9. 9

    YamlDotNet에서 직렬화 사용자 지정 형식을 지정하는 방법은 무엇입니까?

  10. 10

    C #을 사용하여 개체를 직렬화하는 모범 사례 / 방법

  11. 11

    JavaScriptSerializer를 사용하여 JSON을 튜플으로 역 직렬화하는 방법

  12. 12

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

  13. 13

    C #에서 Newtonsoft를 사용하여 역 직렬화하는 방법

  14. 14

    정수를 키로 사용하여 JSON을 역 직렬화하는 방법은 무엇입니까?

  15. 15

    파이썬에서 사용자 정의 필드를 사용하여 객체를 JSON으로 직렬화하는 방법

  16. 16

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

  17. 17

    readObject에 writeObject로부터를 사용하여 사용자 정의 직렬화

  18. 18

    사용자 지정 목록을 JSON C #으로 직렬화

  19. 19

    C #에서 int를 키로 사용하는 JSON 역 직렬화

  20. 20

    그것은 (자바, 하나의 JVM)을 '로컬'은 Vert.x의 eventbus를 사용하는 경우 직렬화를 방지 할 수 있습니까?

  21. 21

    생성자를 멤버 함수로 사용하는 C ++ (직렬화 용)

  22. 22

    GSON을 사용하여 열거 형의 사용자 지정 역 직렬화

  23. 23

    protobuf-net을 사용하여 사용자 정의 클래스를 기본 유형으로 직렬화

  24. 24

    Newtonsoft.Json을 사용하여 C #에서 중첩 배열로 json을 역 직렬화하는 방법

  25. 25

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

  26. 26

    PHP를 사용하여 배열 (배열에서 쿼리 문자열로)을 직렬화하는 방법

  27. 27

    protobuf-net에서 주어진 유형을 직렬화 / 역 직렬화 할 때 사용할 사용자 정의 메소드를 지정하는 방법이 있습니까?

  28. 28

    잭슨 직렬화에 날짜를 사용자 정의하는 방법, @JsonSerialize가 작동하지

  29. 29

    C ++에서 템플릿 함수 직렬화 및 역 직렬화를 대칭 적으로 구현하는 방법

뜨겁다태그

보관