2013-05-22 3 views
0

Я знаю, как я могу создать новый XML-файл, установить объявление, пространство имен и добавить новые элементы в корневой каталог. Однако, если я хочу, чтобы добавить элементы в существующий файл, он добавляется Xmlns как атрибут нового элемента:Как добавить новый элемент в существующий файл XML с пространством имен и xsi и xsi: schemalocation?

<NewElement p3:id="1" idAux="A1" xmlns:p3="http://xyz.com/2006/bbb" xmlns=""> 

Я пытаюсь использовать загруженную пространство имен документа, но это не работает.

Как добавить новые элементы в существующий файл и соблюдать формат существующих элементов?

Я использую linq для xml.

Спасибо.

ответ

1

Попробуйте следующий код:

// Assume 'el' is the new element that's created. 
XElement el = new XElement("NewElement", new XAttribute("{p3}id", 1), new XAttribute("idAux", "A1")); 

выше следует создать следующее:

<NewElement p3:id="1" idAux="A1"> 

Обратите внимание, что пространство имен p3 может быть создан на корневой элемент документа - я не уверен, об этом. Также я знаю, что со старым API System.Xml, если вы не указали пространство имен по умолчанию для своего документа, то XmlSerializer автоматически добавит xsi и xsd пространства имен.

Я знаю, что в старом Xml API, правильный способ указать пространство имен по умолчанию было добавить XmlNamespaceManager -типа свойство вашего класса (который является контейнером для массива XmlQualifiedName объектов) и добавить XmlQualifiedName объект следующим образом : new XmlQualifiedName(string.Empty, "urn:your-namespace-name"). Вероятно, вам нужно сделать что-то подобное для своего документа, используя XML-to-LINQ.

У меня есть сообщение о том, что: XmlSerializer: remove unnecessary xsi and xsd namespaces. НТН.

Смежные вопросы