2012-12-04 2 views
1

XML의 비 직렬화를 처리하는 방법을 찾으려고합니다. 필자는 내장 직렬화를 사용하는 방법을 이해했으며 전에 그렇게 해왔습니다.선택 목록을 사용한 XML 비 직렬화

이번에는 XML의 한 섹션이 메시지 목록 또는 단일 메시지 일 수 있습니다.

편집 : 아래 XML 조각은 잘 구성된 XML 문서의 조각입니다. XML이 수신되면 메시지 목록 또는 단일 메시지가 포함됩니다. 포함하는 XML은 명확성과 간결함을 위해 생략되었습니다.

는 XML 조각 모양을 하나 같이 ...

<messageList> 
    <message>message1</message> 
    <message>message2</message> 
</messageList> 

또는 같은

...
<message>singleMessage</message> 

은 가능한 사용하여이 처리 할 수있는 닷넷 드 직렬화에 내장 아니면 코드를 직접 작성해야합니까? 서로 다른 스키마를 나타 내기 때문에

+6

을보십시오. 그게 당신이 필요로하는 것에 효과가 있습니까? –

+1

두 경우 모두 왜 루트 노드가 없습니까? – Derek

+0

나열된 XML은 더 자세하고 잘 구성된 XML 문서에 포함될 조각입니다. 두 경우 모두 ''또는 ''노드가 포함 된 XML 문서가 수신됩니다. –

답변

0

, 위의 두 경우는 완전히 별개의 엔티티 스키마에서이

[XmlRoot("MessageRoot", Namespace = "", IsNullable = false)] 
public class MessageRoot 
{ 

    [XmlElement(IsNullable = true, ElementName = "message")] 
    public string Message { get; set; } 

    [XmlArray("messageList")] 
    [XmlArrayItem("message")] 
    public string[] Messages { get; set; } 
} 



    <MessageRoot> 
    <message> message </message> 
    <messageList> 
     <message>message1</message> 
     <message>message2</message> 
     </messageList> 
    </MessageRoot>