2009-05-29 17 views
6

Bu feed (bunun snippit) nasıl ekleneceğini böyle tam olarak bakmak gerekir:xml ad alanlarını

Ben bu ekstra xmlns, xsi önemsiz eklemek için bu C# kodu eklemek ne
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> 

:

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

bu bildirim olmadan reddedildi--

+1

Sen kullanmakta olduğunuz programlama dili bahsetmedim. Biri C# varsayar, çünkü WriteStartDocument XmlWriter'de bir yöntemdir, ancak bu bir garanti değildir. – Randolpho

+0

XML parçasının hemen altındaki satırın ortasında "C#" yazıyor ... –

cevap

5

.NET 3.5 bir seçenektir?

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

veya XmlWriter ile

:

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'e dayanan bir sürü kod, yani şu anda bir seçenek değil ... –

+0

cool, iyi görünüyor –

8

bu deneyin:

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, öğreniyorum burada çok fazla! Şimdiye kadar hareket ediyorum ... amazon beslemeyi kabul etti ... –

İlgili konular