2013-09-30 4 views
0

xsd.exe를 사용하여 XML 응답에서 .cs 파일을 생성했습니다.XmlSerializer.Deserialize 불필요한 요소 무시

XML 응답에는 응용 프로그램에서 필요하지 않은 요소가 몇 개 있기 때문에 생략하고 싶습니다. 따라서 응답 XML 파일에서 해당 요소를 제거하고 .cs 파일을 다시 생성했습니다.

이 xml 서버 응답 (이러한 불필요한 요소가 있음)에서이 .cs 파일을 사용하여 System.InvalidOperationException을 발생시킵니다.

필요한 속성 만 가진 클래스에 대한 서버 응답을 구문 분석하거나 역 직렬화 할 수있는 방법을 알려주십시오.

Windows Phone app 용 I wok.

감사합니다. Kavit.

답변

1

더 이상 원하지 않는 속성을 XmlIgnoreAttribute 속성으로 꾸미십시오.

기본적으로 모든 public 필드와 public 읽기/쓰기 속성은 XmlSerializer에 의해 으로 serialize됩니다. 즉, 각 공개 필드 또는 속성의 값은 XML 문서 인스턴스의 XML 요소 또는 XML 특성으로 유지됩니다.

필드 또는 속성의 기본 serialization을 재정의하려면 XmlAttributes 개체를 만들고 XmlIgnore 속성을 true로 설정하십시오. 개체를 XmlAttributeOverrides 개체에 추가하고 무시할 필드 또는 속성이 들어있는 개체 유형을 으로 지정하고 무시할 필드 또는 속성의 이름을 으로 지정합니다.

http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlattributes.xmlignore.aspx

+0

안녕 Gusdor, 빠른 답장을 보내 주셔서 감사합니다, 당신은 내가 실제로 내가 서버 응답을 역 직렬화해야 그는 직렬화 필요합니다 생각, 그래서 특성을 가진 클래스 파일을 만들 언급 무엇을하는 내 응용 프로그램에서 실제 유용하고 휴식을 무시하고, 그 속성만을 deserialize하고 싶습니다. –

+1

@patelkavit 필요없는 속성을 제거하기 만하면됩니다. XmlIgnore는 둘 다 작동합니다. 그것은 public 속성을 가지지 만 임의의 (de) serialization에서 생략하는 좋은 방법입니다. 더 자세한 내용을 보려면 작업 할 몇 가지 예제 코드를 게시해야합니다. – Gusdor

+0

예, 작동하지만 불필요한 지저분한 코드 경향이 있습니다. (사실, webservice 응답에는 우리가 앱에서 10-12 만 필요한 XML 요소가 70 개 있습니다. 따라서 우리는 10-12 개만있는 클래스를 만들고 싶었습니다. –