2011-08-09 9 views
0

스키마 인식 XSD (백업)을 XmlDocument에 메모리 스키마가없는을 XmlDocument에서 변환 }나는이 방법을 쓰기 위해 노력하고있어

입력 문서는 변경하기 쉬운 값 비싼 응용 프로그램 (.Net 2.0으로 작성)에서 가져온 것입니다. 출력은 XSD 인식 XmlSerializer에서 사용됩니다.

XmlSerializer가 작동하려면 루트 요소에 xmlns = "http : // wibble/wobble/wubble"한정자가 필요하다는 것을 보여주는 단위 테스트가 있습니다. 형식이 지정되지 않은 -XmlReader는 상관하지 않습니다. xmlns 한정자를 어떻게 써야합니까?

답변

1

XmlAttributeOverrides을 사용하여 네임 스페이스를 주입해야합니다. 이 컬렉션은 XmlSerializer 생성자에 전달됩니다.

루트 요소를 무시하려면 :

XmlAttributeOverrides overrides = new XmlAttributeOverrides(); 

var rootNode = new XmlRootAttribute() 
{ 
    ElementName = "MyRootNodeName", 
    Namespace = "http://wibble/wobble/wubble" 
}; 

var newAttribute = new XmlAttributes(); 
newAttribute.XmlRoot = rootNode; 

overrides.Add(typeof(MyType), newAttribute); 

는 serilaizer를 호출하려면 :

XmlSerializer serializer = new XmlSerializer(typeof(MyType), overrides); 

당신은 또한 XmlAttributeOverrides를 사용하여 XML에있는 다른 노드를 대체 할 수 있습니다. XmlAttributeOverrides는 친구입니다!

희망이 도움이됩니다.

+0

그랬습니다. 임베디드 리소스 로딩 (xsds) 등에서 나를 구해 줬습니다. – jasonnerothin

+0

걱정하지 마세요. 또한 당신의 wibble 네임 스페이스를 좋아합니다. –

관련 문제