Я пытаюсь записать следующий элемент, используя 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 объявления к тому же элементу?
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.
Ответ Ryan B является неполным, поскольку пространство имен XML записывается только как атрибут, но не регистрируется в таблице имен, поэтому LookupPrefix не получит префикс одного из пространств имен XML, например, f.i. http://www.w3.org/2005/Atom. Он вернет null вместо atom.
LookupPrefix
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/ регистрирует также префикс в таблице имен.
http://www.w3.org/2000/xmlns/
Пространства имен являются просто атрибутами. Используйте стандартные средства записи атрибутов для элемента.