使用C#中的命名空间创建特定的XML文档
我们给出了一个示例文档,并且需要能够准确地为供应商复制文档的结构。但是,我对C#如何处理命名空间感到有点遗憾。下面是该文件的一个样本:使用C#中的命名空间创建特定的XML文档
<?xml version="1.0" encoding="UTF-8"?>
<Doc1 xmlns="http://www.sample.com/file" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sample.com/file/long/path.xsd">
<header>
<stuff>data</stuff>
<morestuff>data</morestuff>
</header>
</Doc1>
如何我通常会去,这是加载一个空白文档,然后开始填充它:
XmlDocument doc = new XmlDocument();
doc.LoadXml("<Doc1></Doc1>");
// Add nodes here with insert, etc...
一旦我得到的文件开始,如何是否将名称空间和模式获取到Doc1元素中?如果我将Doc1元素中的名称空间和模式包含在LoadXml()中,那么的所有子元素都有它们的名称空间 - 这是一个禁忌。该文件被拒绝。
换句话说,我必须如图所示精确地制作它。 (我宁愿不只是用C#编写文本到文件,并希望它是有效的XML)。
你应该尝试这种方式
XmlDocument doc = new XmlDocument();
XmlSchema schema = new XmlSchema();
schema.Namespaces.Add("xmlns", "http://www.sample.com/file");
doc.Schemas.Add(schema);
不要忘了,包括下面的命名空间:如果您在使用Visual Studio 2008的样品
using System.Xml.Schema;
using System.Xml;
文件夹,你会发现一个样本插件,让你粘贴一个XML片段作为Linq2XML代码。
Scott Hanselman有一个blog post的细节。
我认为这是从示例XML文档转换为创建它的C#代码的最快方式。
这里还没有.Net 3.0+。还是2.0。 – 2009-01-14 15:55:46
我个人更喜欢使用通用的XmlElement及其属性来声明命名空间。我知道有更好的方法,但这个永远不会失败。
尝试这样:
xRootElement.SetAttribute("xmlns:xsi", "http://example.com/xmlns1");
什么是xRootElement? – Shrivallabh 2015-04-07 07:10:16
+1指定using语句,这样的代码段的实际工作! – 2013-11-11 09:54:27