직렬화를 위해 C # 특성을 사용하여 xml 요소에 친숙한 이름 특성을 추가 하시겠습니까?

methon.dagger

데이터베이스에서 생성 된 일부 엔터티가 있으며이를 XML로 직렬화하고 싶었습니다. 문제는 일부 엔터티에 사용자 친화적이지 않은 열 이름이 있으며 이는 생성 된 엔터티의 필드에 반영된다는 것입니다.

친숙한 이름 값을 포함하는 xml 특성을 xml 요소 자체에 추가 할 수 있도록 클래스 필드에 적용 할 수있는 C # 특성이 있습니까? 예를 들어 XmlAttribute와 유사한 것을 사용합니다.

public class Book
{
    public string Title { get; set; }

    [XmlAttribute("friendlyName","International Standard Book Number")]
    public string ISBN { get; set; }
} 

직렬화되면 다음과 같은 결과가 나타납니다.

<Book>
  <Title>To Kill a Mockingbird</Title>
  <ISBN friendlyName="International Standard Book Number">9780061120084</ISBN>
</Book>
마이크 힉슨

그렇게 할 속성이 없습니다. 요소 문서를 xml 데이터와 혼합하는 것은 일반적이지 않습니다. 일반적으로 xsd 문서 또는 다른 방법을 사용하여 xml 스키마를 문서화하려고합니다.

즉, 여기에 방법이 있습니다. ISBN속성을 문자열에서 friendlyName직렬화 할 수 있는 속성 이있는 사용자 지정 형식 으로 변경해야합니다 .

public class Book
{
    public string Title { get; set; }

    public ISBN ISBN { get; set; }
}

public class ISBN
{
    [XmlText]
    public string value { get; set; }

    [XmlAttribute]
    public string friendlyName { get; set; }
}

다음은 질문에있는 것과 똑같이 직렬화됩니다.

Book b = new Book
{
    Title = "To Kill a Mockingbird",
    ISBN = new ISBN
    {
        value = "9780061120084",
        friendlyName = "International Standard Book Number",
    }
};

최신 정보

좋아요, 또 다른 접근 방식은 XmlWriter요소를 만들기 위해 serializer가 만든 호출을 가로 챌 수 있는 사용자 지정 을 만드는 것입니다. 친숙한 이름을 추가하려는 속성에 대한 요소를 만들 때 고유 한 사용자 지정 특성을 작성할 수 있습니다.

public class MyXmlTextWriter : XmlTextWriter
{
    public MyXmlTextWriter(TextWriter w)
        : base(w)
    {
    }

    public override void WriteStartElement(string prefix, string localName, string ns)
    {
        base.WriteStartElement(prefix, localName, ns);

        switch(localName)
        {
            case "ISBN":
                WriteAttributeString("friendlyName", "International Standard Book Number");
                break;
        }
    }
}

다음은 콘솔 앱에서 사용하는 방법의 예입니다.

XmlSerializer serializer = new XmlSerializer(typeof(Book));
serializer.Serialize(new MyXmlTextWriter(Console.Out), b);

XmlTextWriter같은 다른 것에 쓸 수 있어야하는 경우 의 다른 생성자를 구현할 수 있습니다 Stream.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C #의 XmlSerializer, 특정 특성으로 동일한 이름을 가진 여러 XmlElement로 장식 된 클래스를 역 직렬화 하시겠습니까?

분류에서Dev

XML을 동일한 요소 이름을 가진 파생 클래스로 역 직렬화 하시겠습니까?

분류에서Dev

Jackson Java를 사용하여 값이없는 속성을 가진 XML 요소를 직렬화 해제

분류에서Dev

변수 콘텐츠를 특성 이름으로 사용하여 XML에서 C # 개체 직렬화

분류에서Dev

가라테 UI : 친숙한 로케이터를 사용하여 하위 요소를 찾을 수없고 대안을 찾을 수 없습니다.

분류에서Dev

특성을 사용하여 XML 역 직렬화 C # 배열

분류에서Dev

이름에 쉼표를 사용하여 JSON 속성 이름을 직렬화 하시겠습니까?

분류에서Dev

직렬화를 위해 xml에 새 속성을 추가 할 수 없습니다.

분류에서Dev

친숙한 ID를 사용하여 슬러그 값이 다른 유사한 이름에 대해 의미있는 URL 생성-Rails 4

분류에서Dev

특정 XSD 정의를 사용하여 쿼리에서 XML을 생성 하시겠습니까?

분류에서Dev

특정 XSD 정의를 사용하여 쿼리에서 XML을 생성 하시겠습니까?

분류에서Dev

C #을 사용하여 요소의 특성에 따라 XML 파일의 콘텐츠 업데이트

분류에서Dev

C # 역 직렬화는 사용자 지정 코드를 통해 특성에 대한 바이트 배열로 문자열을 자동으로 역 직렬화합니까?

분류에서Dev

.htaccess 및 mod_rewrite를 사용하여 데이터베이스의 결과에 대한 친숙한 URL 생성

분류에서Dev

사용자 이름에 접미사 번호를 추가하여 중복을 방지 하시겠습니까?

분류에서Dev

동적 데이터를 사용하여 C #의 DataTable에 행과 열을 추가 하시겠습니까?

분류에서Dev

XML 속성에 최대 길이 속성을 추가 하시겠습니까?

분류에서Dev

C #에서 사용자 지정 직렬화를 사용할 때 XML 요소의 이름을 어떻게 제어 할 수 있습니까?

분류에서Dev

속성이되는 키를 사용하여 키 값 쌍을 xml 요소로 직렬화

분류에서Dev

Azure 특성은 SimpleSAMLphp에서 친숙한 이름 대신 URL을 표시합니다.

분류에서Dev

jquery를 사용하여 선택한 양식을 테이블에 추가 하시겠습니까?

분류에서Dev

사용자 지정 BLE 특성 C ++에 이름 및 ID 속성을 추가하는 방법

분류에서Dev

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

분류에서Dev

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

분류에서Dev

배열에 특정 요소를 추가 하시겠습니까?

분류에서Dev

BizTalk-특성에 네임 스페이스를 추가 하시겠습니까?

분류에서Dev

속성 이름에 $를 사용하여 JSON 역 직렬화

분류에서Dev

ASP.net, C #을 사용하여 PrincipalContext에 의해 Active Directory에 관리자 특성을 추가하는 방법

분류에서Dev

zsh : 특정 명령이나 패턴에 대해 globbing을 비활성화 하시겠습니까?

Related 관련 기사

  1. 1

    C #의 XmlSerializer, 특정 특성으로 동일한 이름을 가진 여러 XmlElement로 장식 된 클래스를 역 직렬화 하시겠습니까?

  2. 2

    XML을 동일한 요소 이름을 가진 파생 클래스로 역 직렬화 하시겠습니까?

  3. 3

    Jackson Java를 사용하여 값이없는 속성을 가진 XML 요소를 직렬화 해제

  4. 4

    변수 콘텐츠를 특성 이름으로 사용하여 XML에서 C # 개체 직렬화

  5. 5

    가라테 UI : 친숙한 로케이터를 사용하여 하위 요소를 찾을 수없고 대안을 찾을 수 없습니다.

  6. 6

    특성을 사용하여 XML 역 직렬화 C # 배열

  7. 7

    이름에 쉼표를 사용하여 JSON 속성 이름을 직렬화 하시겠습니까?

  8. 8

    직렬화를 위해 xml에 새 속성을 추가 할 수 없습니다.

  9. 9

    친숙한 ID를 사용하여 슬러그 값이 다른 유사한 이름에 대해 의미있는 URL 생성-Rails 4

  10. 10

    특정 XSD 정의를 사용하여 쿼리에서 XML을 생성 하시겠습니까?

  11. 11

    특정 XSD 정의를 사용하여 쿼리에서 XML을 생성 하시겠습니까?

  12. 12

    C #을 사용하여 요소의 특성에 따라 XML 파일의 콘텐츠 업데이트

  13. 13

    C # 역 직렬화는 사용자 지정 코드를 통해 특성에 대한 바이트 배열로 문자열을 자동으로 역 직렬화합니까?

  14. 14

    .htaccess 및 mod_rewrite를 사용하여 데이터베이스의 결과에 대한 친숙한 URL 생성

  15. 15

    사용자 이름에 접미사 번호를 추가하여 중복을 방지 하시겠습니까?

  16. 16

    동적 데이터를 사용하여 C #의 DataTable에 행과 열을 추가 하시겠습니까?

  17. 17

    XML 속성에 최대 길이 속성을 추가 하시겠습니까?

  18. 18

    C #에서 사용자 지정 직렬화를 사용할 때 XML 요소의 이름을 어떻게 제어 할 수 있습니까?

  19. 19

    속성이되는 키를 사용하여 키 값 쌍을 xml 요소로 직렬화

  20. 20

    Azure 특성은 SimpleSAMLphp에서 친숙한 이름 대신 URL을 표시합니다.

  21. 21

    jquery를 사용하여 선택한 양식을 테이블에 추가 하시겠습니까?

  22. 22

    사용자 지정 BLE 특성 C ++에 이름 및 ID 속성을 추가하는 방법

  23. 23

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

  24. 24

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

  25. 25

    배열에 특정 요소를 추가 하시겠습니까?

  26. 26

    BizTalk-특성에 네임 스페이스를 추가 하시겠습니까?

  27. 27

    속성 이름에 $를 사용하여 JSON 역 직렬화

  28. 28

    ASP.net, C #을 사용하여 PrincipalContext에 의해 Active Directory에 관리자 특성을 추가하는 방법

  29. 29

    zsh : 특정 명령이나 패턴에 대해 globbing을 비활성화 하시겠습니까?

뜨겁다태그

보관