2011-12-21 3 views
0

XML을 수신하고이를 개체로 역 직렬화하는 파서를 만들고 있습니다. 두 개의 서로 다른 스키마를 사용하여 XML을 비 직렬화 한 클래스를 생성했습니다. 그러나 deserialize 할 때 사용할 클래스를 결정해야합니다.XML을 deserialize 할 클래스를 결정하는 방법

유형이이 effecient 방법으로 수행 할 수 있습니다 어떻게

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
<typeA> 
<info> 
</info> 
</typeA> 

B 형

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
    <typeB> 
<info> 
    </info> 
</typeB> 

:

XML은 다음과 같이 보입니다?

+0

해당 XML 파일이 분리되어 있습니까? 그렇지 않다면 두 번째 XML 선언을해서는 안되며 ' ... ...'을 다른 요소로 묶어야합니다. – Polynomial

+0

예, 별도의 파일 – johan

+0

XML에 객체 유형이나 Classname을 쓰지 않는 이유는 무엇입니까? – CloudyMarble

답변

3

.NET에서 serializer는 네임 스페이스를 사용하여 XML을 역 직렬화 할 유형을 결정합니다.

사용자 지정 serialization을 구현하는 경우에도 동일한 규칙을 따릅니다.

XML 파일에서 네임 스페이스를 검색 한 다음이를 deserialize 할 형식을 결정할 수 있습니다.

+0

하지만 네임 스페이스가 지정되지 않았습니다 – johan

+0

@johan : XML 네임 스페이스를 추가해야합니다. "지름길"방법은 XPath를 사용하여 결정 기준을 위해 typeA 또는 typeB 요소가 있는지 XML을 "테스트"하는 것입니다. – Leon

+0

서비스에서 문자열로 가져옵니다. 그런 다음 XMLDocument로 변환해야합니까? 다른 방법이 없습니까? – johan

관련 문제