使用C#中的命名空间创建特定的XML文档

我们获得了一个示例文档,并且需要能够为供应商准确地再现文档的结构。 但是,我对C#如何处理命名空间感到有点迷茫。 以下是该文档的示例:

  
data data

我通常会这样做是加载一个空白文档,然后开始填充它:

 XmlDocument doc = new XmlDocument(); doc.LoadXml(""); // Add nodes here with insert, etc... 

一旦我开始编写文档,如何将命名空间和模式放入Doc1元素中? 如果我通过将它们包含在LoadXml()中来启动Doc1元素中的命名空间和模式,那么所有子元素都具有命名空间 – 这就是禁忌。 该文件被拒绝。

换句话说,我必须如图所示完全生产它。 (而且我宁愿不只是在C#中编写文本到文件,并希望它是有效的XML)。

你应该这样试试

  XmlDocument doc = new XmlDocument(); XmlSchema schema = new XmlSchema(); schema.Namespaces.Add("xmlns", "http://www.sample.com/file"); doc.Schemas.Add(schema); 

不要忘记包含以下命名空间:

 using System.Xml.Schema; using System.Xml; 

我个人更喜欢使用常见的XmlElement及其属性来声明命名空间。 我知道有更好的方法,但这个方法永远不会失败。

尝试这样的事情:

 xRootElement.SetAttribute("xmlns:xsi", "http://example.com/xmlns1"); 

如果您在Samples文件夹中使用Visual Studio 2008,您将找到一个示例插件,您可以将XML片段粘贴为Linq2XML代码。

Scott Hanselman的博客文章详细介绍。

我认为这是从样本XML文档到创建它的C#代码的最快捷方式。