2010-02-14 7 views
1

XSD.exe 도구를 통해 XML 파일에서 생성 된 클래스가 있습니다. 클래스에는 요소가있는 배열이 들어 있습니다.배열 요소의 XML serializer 요소 이름 변경

최근까지만 완전히 인스턴스화 된 비즈니스 객체에서 전체 문서 렌더링이 가능했지만 크기 때문에 문서 배열 요소를 스트림으로 렌더링하여 메모리가 부족하지 않도록해야했습니다.

그러나 배열 요소를 렌더링 할 때 XML 직렬화에서 다른 요소 이름을 얻습니다. XMLAttributesOverride를 만들려고했지만이 속성에서 XmlElement 특성을 재정의 할 수 없다는 오류가 반환되었습니다. 이 형식을 강력하게 입력하고 XSD에 맞게 수정하려고합니다. 따라서 XML 요소의 이름을 배열 이름 +1로 변경하는 방법을 아는 사용자가 있습니다.

+0

당신은 대체를 사용할 수 있어야합니다. 오류가 발생한 코드를 표시하십시오. – Cheeso

답변

8

XmlArray 및 XmlArrayElement 특성을 사용해 보셨습니까? http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlarrayattribute.aspx
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlarrayitemattribute.aspx

[XmlArrayItem(ElementName="GenericItem", Type = typeof(Item))] 
[XmlArrayItem(ElementName="BookItem", Type = typeof(BookItem))] 
[XmlArray] 
public Item []Items {...} 
+0

문제는 XML 스키마가 저에게 제어되지 않는다는 것입니다. 따라서 가능한 경우 클래스의 코드 편집을 피하려고합니다. – Spence

+0

잘 작동합니다. - 감사합니다. –

5


이 시도 :

[XmlType(TypeName="MyItems")] 
public class MyItems:List<Item> 
{ } 

결과 XML은 다음과 같습니다

<MyItems xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Item>...</Item> 
</MyItems>