2009-12-15 2 views
20

Sto cercando di scrivere il seguente elemento usando XmlWriterL'aggiunta di più dichiarazioni di namespace in 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"> 

Ho la prima dichiarazione fatta utilizzando

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

Come posso aggiungere il restante 3 dichiarazioni allo stesso elemento?

risposta

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

Ottenuto quello da https://msdn.microsoft.com/en-us/library/cfche0ka(v=vs.100).aspx.

+0

Sei così gentile, in realtà fornendo il codice. –

+0

Grazie Ryan! Che funzioni. – etechpartner

0

Gli spazi dei nomi sono semplicemente attributi. Usa i mezzi standard per scrivere attributi per l'elemento.

0

La risposta di Ryan B è incompleta in quanto lo spazio dei nomi XML viene solo scritto come attributo ma non registrato nella tabella dei nomi, pertanto LookupPrefix non riuscirà a ottenere il prefisso di uno degli spazi dei nomi XML, f.i. http://www.w3.org/2005/Atom. Restituirà null invece atom.

Per scrivere un attributo namespace e ottenere namespace uso registrato

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

L'utilizzo di namespace http://www.w3.org/2000/xmlns/ registri anche il prefisso nella tabella dei nomi.