2009-05-29 18 views
6

Este feed (snippit de ella) tiene que mirar exactamente como esta:cómo agregar espacios de nombres XML

<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> 

lo agrego a este código C# para añadir que xmlns adicionales, basura xsi:

writer.WriteStartDocument(); 
writer.WriteStartElement("AmazonEnvelope"); 

este feed se rechaza sin él--

+1

No ha mencionado lenguaje de programación que está utilizando. Uno asume C# porque WriteStartDocument es un método en XmlWriter, pero eso no es una garantía. – Randolpho

+0

Dice "C#" en el medio de la línea justo debajo del fragmento XML ..... –

Respuesta

5

¿Es .NET 3.5 una opción?

XNamespace ns = "http://www.w3.org/2001/XMLSchema-instance"; 

string s = new XElement("AmazonEnvelope", 
    new XAttribute(XNamespace.Xmlns + "xsi", ns), 
    new XAttribute(ns + "noNamespaceSchemaLocation", "amzn-envelope.xsd") 
).ToString(); 

o con XmlWriter:

const string ns = "http://www.w3.org/2001/XMLSchema-instance"; 
writer.WriteStartDocument(); 
writer.WriteStartElement("AmazonEnvelope"); 
writer.WriteAttributeString("xmlns", "xsi", "", ns); 
writer.WriteAttributeString("xsi", "noNamespaceSchemaLocation", 
     ns, "mzn-envelope.xsd"); 
writer.WriteEndDocument(); 
+0

un montón de código basado en XmlWriter, por lo que no es una opción en este momento ... –

+0

genial, se ve bien –

8

Prueba esto:

writer.WriteStartElement("AmazonEnvelope"); 
writer.WriteAttributeString(
    "xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); 
writer.WriteAttributeString(
    "xsi", "noNamespaceSchemaLocation", null, "amzn-envelope.xsd"); 
... 
writer.WriteEndElement(); 
+0

wow, aprendo tanto aquí! Me estoy moviendo ahora ... amazona aceptó el feed ... ¡¡api sensible !! –

Cuestiones relacionadas