Преобразовать XmlDocument без схемы в памяти в XmlDocument с поддержкой схемы (с поддержкой xsd) - PullRequest
0 голосов
/ 09 августа 2011

Я пытаюсь написать этот метод:

XmlDocument AddSchemaToRootNode (XmlDocument xmlDocument, строковая схема) {

}

Входной документ поступает из дорогостоящего приложения (написано в .Net 2.0). Выходные данные используются Xml-Xerializer с поддержкой XSD.

У меня есть модульные тесты, которые показывают, что мне нужен квалификатор xmlns = "http://wibble/wobble/wubble" в корневом элементе, чтобы XmlSerializer работал. Для untyped-XmlReader все равно.

1 Ответ

1 голос
/ 10 августа 2011

Вам необходимо ввести ваше пространство имен, используя 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);

Вы также можете переопределить любой другой узел в XML с помощью XmlAttributeOverrides.XmlAttributeOverrides - ваш друг!

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...