2009-05-29 3 views
6

Dieser Feed (snippit davon) hinzuzufügen, muss genau so aussehen:wie XML-Namespaces

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

was ich zu diesem C# Code hinzufügen, dass zusätzliche xmlns, xsi Ramsch hinzuzufügen:

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

Dieser Feed wird abgelehnt ohne it--

+1

Sie haben nicht, welche Programmiersprache Sie verwenden erwähnt. Man nimmt C# an, weil WriteStartDocument eine Methode auf XmlWriter ist, aber das ist keine Garantie. – Randolpho

+0

Es sagt "C#" in der Mitte der Zeile direkt unter dem XML-Fragment. –

Antwort

5

Ist .NET 3.5 eine Option?

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

oder mit 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

viel Code auf XmlWriter basiert, also keine Option im Moment ... –

+0

cool, sieht gut aus –

8

Try this:

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, ich lerne so viel hier !! Ich gehe jetzt weiter ... amazon nahm das Futter an ... empfindliche api !! –

Verwandte Themen