Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding multiple namespace declarations in XmlWriter

I am trying to write out the following element using 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"> 

I've got the very first declaration done using

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

How can I add the remaining 3 declarations to the same element?

like image 570
etechpartner Avatar asked Dec 15 '09 04:12

etechpartner


2 Answers

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"); 

Got that from https://msdn.microsoft.com/en-us/library/cfche0ka(v=vs.100).aspx.

like image 50
Ryan B Avatar answered Sep 18 '22 19:09

Ryan B


The answer of Ryan B is incomplete as the XML namespace is only written as attribute but not registered in the name table, so LookupPrefix will fail getting prefix of one of the XML namespaces, f.i. http://www.w3.org/2005/Atom. It will return null instead atom.

To write a namespace attribute and get namespace registered use

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

Use of namespace http://www.w3.org/2000/xmlns/registers also the prefix in name table.

like image 27
VBWebProfi Avatar answered Sep 18 '22 19:09

VBWebProfi