2011-09-13 1 views
1

데이터를 XML DOM 모델로 조작하는 기존 응용 프로그램이 있습니다. 이제는 그 데이터를 다른 서브 시스템에 C# 객체의 콜렉션으로 넘겨주고 싶습니다..NET 객체에 DOM XmlElement deserialise

내가 알 수있는 한, DOM 표현을 MemoryStream에 serialize하고 XmlSerializer를 사용하여 스트림을 역 직렬화 할 수 있습니다. 중간에 텍스트 표현을하지 않고 DOM 표현을 직접 처리하는 방법이 있습니까? 그러나 나는 그것을 발견 할 수 없다.

DOM 표현에 System.Xml.Serialization을 어떻게 사용할 수 있습니까?

+0

이 C#은 어디에 있습니까? 서버에서 또는 어떤 방식으로 브라우저에서 실행 중입니까? –

+0

.NET Framework에서 실행되도록 컴파일 된 C#입니다. 어쨌든, 그 답은 둘 다 아닙니다. 데스크탑 응용 프로그램입니다. 구식, 알아. – Tom

+0

ㅎ, nm. "DOM"을 보았을 때 C#으로 브라우저 DOM에 액세스하고 있다고 생각했습니다. –

답변

4

XmlDocument를 사용자 지정 컬렉션에 투사하려는 것처럼 들립니다. XmlSerializer.Deserialize를 사용하여이 작업을 수행 할 수 있지만 XmlDocument의 구조가 컬렉션 멤버와 잘 정렬되어 있어야합니다.

이 경우 사실 XmlSerializer.Deserialize Method을 사용하면 XmlNodeReader을 사용하는 완벽한 방법입니다. 예.

XmlDocument xdoc = GetAnXmlDocument(); 
    XmlSerializer serializer = new XmlSerializer(typeof(SomeCollection)); 
    SomeCollection coll = xSerializer.Deserialize(new XmlNodeReader(xdoc)); 

그러나 당신은을 XmlDocument 당신은 Linq-to-xml을 사용하고 당신이 좋아하는 무엇을 적 투사 수행 할 단지 수있는 컬렉션과 일치하지 않는 경우.

+0

그건 내가하고 싶은 것이 아니지만 'XmlNodeReader'는 내가 누락 된 것입니다. 감사합니다 @conrad! – Tom