2009-05-29 12 views
6

Questo feed (snippit di esso) deve apparire esattamente come questo:come aggiungere namespace XML

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

quello che faccio ad aggiungere a questo codice C# per aggiungere che xmlns aggiuntivi, xsi spazzatura:

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

questo feed è rifiutato senza di esso--

+1

Non hai menzionato che il linguaggio di programmazione che si sta utilizzando. Si assume C# perché WriteStartDocument è un metodo su XmlWriter, ma non è una garanzia. – Randolpho

+0

Dice "C#" nel mezzo della linea appena sotto il frammento XML ..... –

risposta

5

.NET 3.5 è un'opzione?

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 sacco di codice basato su XmlWriter, quindi non un'opzione al momento ... –

+0

cool, sembra buono –

8

Prova questa:

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, imparo così tanto qui !! Mi sto muovendo ora ... Amazon ha accettato il feed ... touchy api !! –

Problemi correlati