2011-11-14 2 views
2

현재, 나는 직렬화 된 내용은 다음과 같습니다 다른 개체 (.NET 2.0)XmlSerializer는 deserialize 할 때 XML에서 형식을 자동으로 검색합니다 (.NET 2.0)?

를 직렬화 XmlSerializer를 사용하고 있습니다

<?xml version="1.0"?> 
<InitActivityAction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <EmploymentID>1</EmploymentID> 
    <DateFrom>2011-11-14T21:08:17.5893302Z</DateFrom> 
</InitActivityAction> 

XmlSerializer를 생성자를 지정하는 입력이 필요합니다. 하지만 많은 객체 유형을 사용합니다.

XmlSerializer를 XML에서 "자동 검색"하는 데 필요한 형식을 만들 수있는 방법이 있습니까?

답변

4

기본적으로 제공되지 않습니다.

옵션이 있습니다. 여기에 몇 가지가 있습니다 :

(1) XPath를 사용하여 XML을 들여다 보며 루트 요소 이름을 얻어 객체 유형을 결정하거나 각 클래스마다 고유 한 네임 스페이스를 사용할 수 있습니다.

(2) CodeProject에서 this one과 같은 더 복잡한 XML serializer를 사용할 수도 있습니다.이 serializer는 "사전"에서 유형을 자동으로 결정합니다. 그런 다음 리플렉션을 사용하여 실제로 어떤 유형인지 판단 할 수 있습니다.

(3) 각 XmlSerializer를 사용하여 XML 형식을 deserialize하려고 시도 할 수도 있습니다. 별로 좋지 않습니다.

(4) 마지막으로 각 개체에 대한 멤버가있는 클래스를 만들고 각 개체 대신 개별적으로 직렬화 할 수 있습니다. 예를 들어 열거 형 멤버를 사용하면 올바른 멤버를 추출하는 코드를 작성할 수 있습니다. 다시 말하지만, 좋은 해결책은 아닙니다.

이러한 모든 방법으로 성능 비용이 추가됩니다. 그리고 그들은 정확하게 좋은 옵션이 아닙니다 :)

관련 문제