2011-08-09 34 views
0

我試圖寫這個方法:轉換成一個一個模式感知(XSD支持)的XmlDocument

的XmlDocument AddSchemaToRootNode(XmlDocument的XmlDocument的,字符串模式){

}

輸入文檔來自一個昂貴的應用程序(用.Net 2.0編寫)。輸出由支持XSD的XmlSerializer使用。

我有單元測試,表明我需要在根元素上的xmlns =「http:// wibble/wobble/wubble」限定符才能使XmlSerializer工作。 untyped-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命名空間。 –

相關問題