2011-02-08 63 views
9

我必須在C#中創建一個XML文檔。如何在創建XML文件時添加一個名稱空間?

根元素必須是這樣的:

<valuation-request 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="valuations.xsd"> 

我使用以下

XmlElement root = X.CreateElement("valuation-request"); 
root.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); 
root.SetAttribute("xsi:noNamespaceSchemaLocation", "valuations.xsd"); 

然而,這會產生

<valuation-request 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    noNamespaceSchemaLocation="valuations.xsd"> //missing the xsi: 

我缺少什麼?

回答

8

使用的SetAttribute過載,這需要命名空間以及:

root.SetAttribute("noNamespaceSchemaLocation", 
    "http://www.w3.org/2001/XMLSchema-instance", 
    "valuations.xsd" 
); 
+0

我使用root.SetAttribute( 「XSI:no​​NamespaceSchemaLocation」, 「valuations.xsd」);.你會如何看待它應該看起來? – Steven

+1

試試這個root.SetAttribute(「noNamespaceSchemaLocation」,「valuations.xsd」,「http://www.w3.org/2001/XMLSchema-instance」); –

+0

返回 Steven

0

與作家添加這​​樣的:

var writerSettings = new XmlWriterSettings 
     { 
      Indent = true, 
      IndentChars = " ", 
      NewLineChars = Environment.NewLine, 
      NewLineHandling = NewLineHandling.Replace, 
      Encoding = new UTF8Encoding(false) 
     }; 

XmlWriter writer = XmlWriter.Create("C:\test.xml", writerSettings); 
writer.WriteStartDocument(false); 
writer.WriteStartElement("valuation-request"); 
writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); 
writer.WriteAttributeString("xsi", "noNamespaceSchemaLocation", null, "http://www.gzs.si/e-poslovanje/sheme/eSLOG_1-5_EnostavniRacun.xsd"); 
1

最近,我也遇到過同樣的問題。要解決這個問題,我只是添加如下一行:

XmlAttribute noNamespaceSchemaLocationAttr = xmlDoc.CreateAttribute("xsi", "noNamespaceSchemaLocation", "http://www.w3.org/2001/XMLSchema-instance"); 
+0

在我的代碼上工作得很好。對我來說很重要的是XMLSchema實例部分 –

相關問題