2011-09-28 4 views
1

일부 멤버 변수가 string이고 값이 null 인 개체를 직렬화하려고합니다. 나는 그것을 원하지 않지만, 값 nullXmlTextWriter 및 null 문자열

 var writer = new XmlTextWriter(stream, Encoding.UTF8); 
     writer.Formatting = Formatting.Indented; 

     var s = new XmlSerializer(typeof(model.GetType()));    
     s.Serialize(writer, model); 

문자열이 (분명히 행동을 것입니다) XML 파일에 표시되지 않습니다 : 는 다음 코드를 사용합니다. XmlTextWriter 클래스를 재정 의하여 XML null 문자열을 XML 파일에 표시하려면 어떻게해야합니까?

편집 : Xml 특성이 옵션이되지 않도록 직렬화해야하는 개체 모델을 수정할 수 없습니다.

답변

1

당신은 사용할 수 있습니다

[XmlElement(IsNullable = true)] 

을 모든 구성원에이 파일에 기록 할 null의 경우합니다.

+0

답변 해 주셔서 감사합니다. 개체 모델을 수정할 수 없으므로이 솔루션을 사용할 수 없습니다. 이 제약 조건을 포함하도록 질문을 수정했습니다. – thumbmunkeys

+0

@ x0r : 개체 컬렉션을 순환시키고 String으로 null 항목을 대체하십시오. 공백은 해결책이 아닙니다. 맞습니까? – Marco

+0

그것은 해결책이 될 것입니다! 객체의 모음이 아니지만 객체의 트리가 더 많습니다. 따라서 리플렉션을 사용하여 트리를 탐색하고 모든 멤버 변수를 살펴보고 이러한 'null'문자열을 설정해야합니다. – thumbmunkeys

1

당신은 당신이 멤버에이 속성을 사용할 수 있습니다

[XmlElement(IsNullable = true)] 

그것은 대신 직렬화하지 않는 null 인 것을 지정하여 요소에 속성을 설정합니다.

0

ObjektModleTree를 복제하고 "null"문자열을 빈 것으로 대체하는 것이 좋습니다.

새 클래스에서 XmlSerializer를 상속하고 "null"문자열없이 ObjectModelTree를 복제하십시오. ObjektModel을 변경할 수 있다면 자신의 serializer를 제거하고 .NET Serializer를 사용하여 작업을 수행 할 수 있습니다.

관련 문제