2009-05-29 14 views
6

このフィード(それのsnippit)を追加する方法を次のように正確に見てする必要があります:は、XML名前空間

私はその余分のxmlns、XSIのジャンク追加するには、このC#のコードに追加しないものを
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> 

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

このフィードは拒否されています。

+1

を。 WriteStartDocumentはXmlWriterのメソッドであるため、C#を前提としていますが、それは保証ではありません。 – Randolpho

+0

XML断片のすぐ下にある行の真ん中にある "C#"と書かれています..... –

答えて

5

.NET 3.5はオプションですか?

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

または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

XmlWriterに基づくコードはたくさんありますので、現時点ではオプションではありません... –

+0

cool、looks good –

8

この試してみてください:あなたが使用しているどのプログラミング言語を言及していない

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

とてもここに!私は今一緒に動いている...アマゾンはフィードを受け入れ... touchy API! –