2011-02-08 9 views
9

Tengo que crear un documento XML en C#.¿Cómo agrego un espacio de nombres al crear un archivo XML?

elemento

La raíz tiene que tener este aspecto:

<valuation-request 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="valuations.xsd"> 

estoy usando el siguiente

XmlElement root = X.CreateElement("valuation-request"); 
root.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); 
root.SetAttribute("xsi:noNamespaceSchemaLocation", "valuations.xsd"); 

Sin embargo, esto produce

<valuation-request 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    noNamespaceSchemaLocation="valuations.xsd"> //missing the xsi: 

¿Qué me falta?

Respuesta

8

Utilice la sobrecarga de SetAttribute, que tiene espacio de nombres, así:

root.SetAttribute("noNamespaceSchemaLocation", 
    "http://www.w3.org/2001/XMLSchema-instance", 
    "valuations.xsd" 
); 
+0

estoy usando root.SetAttribute ("xsi: noNamespaceSchemaLocation", "valuations.xsd") ;. ¿Cómo sugerirías que debería verse? – Steven

+1

intente con este root.SetAttribute ("noNamespaceSchemaLocation", "valuations.xsd", "http://www.w3.org/2001/XMLSchema-instance"); –

+0

Que devuelve Steven

0

Con el escritor que lo agregue como esto:

var writerSettings = new XmlWriterSettings 
     { 
      Indent = true, 
      IndentChars = " ", 
      NewLineChars = Environment.NewLine, 
      NewLineHandling = NewLineHandling.Replace, 
      Encoding = new UTF8Encoding(false) 
     }; 

XmlWriter writer = XmlWriter.Create("C:\test.xml", writerSettings); 
writer.WriteStartDocument(false); 
writer.WriteStartElement("valuation-request"); 
writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); 
writer.WriteAttributeString("xsi", "noNamespaceSchemaLocation", null, "http://www.gzs.si/e-poslovanje/sheme/eSLOG_1-5_EnostavniRacun.xsd"); 
1

Recientemente, he encontrado misma edición. Para resolverlo, acabo de añadir la línea siguiente:

XmlAttribute noNamespaceSchemaLocationAttr = xmlDoc.CreateAttribute("xsi", "noNamespaceSchemaLocation", "http://www.w3.org/2001/XMLSchema-instance"); 
+0

que funciona bien en mi código. Importante para mí fue la parte de XMLSchema-instance –

Cuestiones relacionadas