Добавление нескольких объявлений пространства имен в XmlWriter - PullRequest
22 голосов
/ 15 декабря 2009

Я пытаюсь записать следующий элемент, используя XmlWriter

<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">

Самое первое объявление сделано с использованием

writer.WriteStartElement("kml", "http://www.opengis.net/kml/2.2");

Как я могу добавить оставшиеся 3 объявления к тому же элементу?

Ответы [ 3 ]

37 голосов
/ 15 декабря 2009
writer.WriteAttributeString("xmlns","gx", null, "http://www.google.com/kml/ext/2.2");
writer.WriteAttributeString("xmlns","kml", null, "http://www.opengis.net/kml/2.2");
writer.WriteAttributeString("xmlns","atom", null, "http://www.w3.org/2005/Atom");

Получил это от https://msdn.microsoft.com/en-us/library/cfche0ka(v=vs.100).aspx.

3 голосов
/ 10 февраля 2018

Ответ Ryan B является неполным, поскольку пространство имен XML записывается только как атрибут, но не регистрируется в таблице имен, поэтому LookupPrefix не получит префикс одного из пространств имен XML, например, f.i. http://www.w3.org/2005/Atom. Он вернет null вместо atom.

Чтобы написать атрибут пространства имен и получить зарегистрированное пространство имен, используйте

writer.WriteAttributeString("atom",
                            "http://www.w3.org/2000/xmlns/",
                            "http://www.w3.org/2005/Atom");

Использование пространства имен http://www.w3.org/2000/xmlns/ регистрирует также префикс в таблице имен.

0 голосов
/ 15 декабря 2009

Пространства имен являются просто атрибутами. Используйте стандартные средства записи атрибутов для элемента.

...