将内存模式中的XmlDocument转换为模式感知(xsd支持的)XmlDocument

时间:2011-08-09 16:22:46

标签: c# xml xsd

我正在尝试编写此方法:

XmlDocument AddSchemaToRootNode(XmlDocument xmlDocument,string schema) {

}

输入文档来自昂贵的变更应用程序(用.Net 2.0编写)。输出由支持XSD的XmlSerializer消耗。

我有单元测试,表明我需要在根元素上使用xmlns =“http:// wibble / wobble / wubble”限定符,以便XmlSerializer工作。无类型的XmlReader并不关心。如何获取用xmlns限定符编写的内容?

1 个答案:

答案 0 :(得分: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是你的朋友!

希望这有帮助。