使用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#代码的最快捷方式。
- 在C#4中为ProgressChanged事件添加额外参数
- C#generics中的通配符等价物
- WinRT – 在保持UI响应的同时加载数据
- “unit testing1”,但在其下方,列表为空
- 用C#编写剪贴板查看器
- 为什么Parallel.ForEach比AsParallel()快得多.ForAll()尽管MSDN建议不然?
- 如果不存在,如何创建“嵌入式”SQL 2008数据库文件?
- Identity 2.0:创建自定义ClaimsIdentity例如:User.Identity.GetUserById (int id)for Per Request Validation
- Thread.sleep vs Monitor.Wait vs RegisteredWaitHandle?