Есть ли способ добавить более одного свойства к определенному элементу XML с помощью XMLWrite С#?

Я пытаюсь программно добавлять элементы с помощью XML-писателя С#, и все отлично работает. В настоящее время у меня есть это:

<module_name path="pathToModule"></module_name>

Я пытаюсь получить такую ​​​​структуру:

<module_name path="pathToModule" name="nameOfModule", executable="moduleExecutale"></module_name>

Мой XMLWriter выглядит примерно так:

var xmlWriterSettings = new XmlWriterSettings()
{
   Indent = true,
   IndentChars = "\t",
   NewLineOnAttributes = true
};
using (XmlWriter writer = XmlWriter.Create(_pathToOutputXml, xmlWriterSettings))
{
    writer.WriteStartElement("module_name", "name", realModuleName);

}

я тоже пробовал

writer.WriteStartElement("module_name", "name", realModuleName);
writer.WriteAttributeString("path", path, "executable", executable);

и это не компилируется. Ошибка Недопустимый символ имени в файле. Символ ':', шестнадцатеричное значение, не может быть включен в имя. Я предполагаю, что это неправильный подход, но я не вижу другого выхода.

Какие свойства XMLWriter можно использовать для достижения этой цели?


person jshaf    schedule 08.12.2016    source источник
comment
Зачем ограничиваться XMLWriter, а не XmlDocumentили XDocuemnt?   -  person Lei Yang    schedule 08.12.2016
comment
Что конкретно вам нужно в этой структуре? Список атрибутов? Пустая строка? Полный конечный элемент </modulename>? Деформированный ,, разделяющий атрибуты? Кроме того, данный код не производит ничего похожего на то, что вы говорите, что у вас есть, так что это добавляет путаницы.   -  person Mike Zboray    schedule 08.12.2016
comment
@LeiYang Я не ограничен XMLWriter, это именно то, что я использовал для программного создания XML-документа.   -  person jshaf    schedule 08.12.2016
comment
@mikez Извините за путаницу, но все, что я ищу, это несколько атрибутов, таких как ‹module_name path=pathToModule name=nameOfModule, executable=moduleExecutale›   -  person jshaf    schedule 08.12.2016
comment
Я не уверен, что XMLWriter предоставляет эту функциональность?   -  person jshaf    schedule 08.12.2016
comment
Затем предложите попробовать XmlDocument или XDocuemnt   -  person Lei Yang    schedule 08.12.2016
comment
@LeiYang XmlDocumentor?   -  person jshaf    schedule 08.12.2016
comment
Я попробую.   -  person jshaf    schedule 08.12.2016
comment
попробуй WriteAttributeString   -  person Mike Zboray    schedule 08.12.2016
comment
@mikez Это не сработало. В идеале мне нужен метод с большим количеством пар атрибутов ключ/значение.   -  person jshaf    schedule 08.12.2016
comment
@jshaf Ну, я мог бы помочь, если бы знал, что вы пытались и что пошло не так, но все, что я знаю сейчас, это то, что это не сработало. Нет такого метода. Намерение состоит в том, что вы вызываете WriteAttributeString для каждого атрибута. Не стесняйтесь писать метод-оболочку, если хотите.   -  person Mike Zboray    schedule 08.12.2016
comment
@mikez Я обновил вопрос с проблемой. Не похоже, что у XmlWriter есть способ сделать это.   -  person jshaf    schedule 08.12.2016


Ответы (1)


Я понял. Оказывается, если я хочу добавить атрибуты к определенному элементу, мне нужно будет сделать что-то вроде этого:

writer.WriteStartElement("module_name");
writer.WriteAttributeString("name", realModuleName);
writer.WriteAttributeString("path", path); 
writer.WriteAttributeString("executable", executable);

В результате получится такой элемент:

<module_name name="Captiva Administrator" path="" executable="test.exe">
person jshaf    schedule 08.12.2016