我正在尝试编写此方法:
XmlDocument AddSchemaToRootNode(XmlDocument xmlDocument,string schema) {
}
输入文档来自昂贵的变更应用程序(用.Net 2.0编写)。输出由支持XSD的XmlSerializer消耗。
我有单元测试,表明我需要在根元素上使用xmlns =“http:// wibble / wobble / wubble”限定符,以便XmlSerializer工作。无类型的XmlReader并不关心。如何获取用xmlns限定符编写的内容?
答案 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是你的朋友!
希望这有帮助。