2009-05-29 107 views
6

这种饲料(它SNIPPIT)需要看起来就像这样:如何添加XML命名空间

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

我该怎么添加到这个C#代码添加额外的xmlns,XSI垃圾:

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

这个消息被拒绝没有它 -

+1

你没有提到你使用的编程语言。一个假定C#是因为WriteStartDocument是XmlWriter上的一个方法,但这不是保证。 – Randolpho 2009-05-29 21:01:27

+0

它说在XML片段下面的行中间的“C#”..... – 2009-05-29 21:11:22

回答

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的代码,所以目前没有一个选项... – 2009-05-29 21:32:34

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