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

标签 c# xml namespaces xsd

我们获得了一份示例文档,需要能够为供应商准确地复制文档的结构。但是,我对 C# 处理命名空间的方式有些迷惑。以下是文档示例:

<?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 元素中的 namespace 和模式开始,将它们包含在 LoadXml() 中,那么所有 子元素都具有 namespace ——这是一个禁忌。文档被拒绝。

所以换句话说,我必须完全按照显示的方式制作它。 (而且我宁愿不只是用 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;

关于c# - 在 C# 中使用命名空间创建特定的 XML 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/443250/

相关文章:

c# - 如何在 C# 中处理特定的 SQL 异常(例如,违反唯一约束)?

c# - 有什么方法可以将 SqlTypes 与 SqlDataAdapter 一起使用吗?

c# - 如何在 C# 中创建用户定义的命名空间

c# - 有什么办法可以摆脱我的 .cs 文件顶部的一长串用途吗?

python - 有没有办法访问用装饰器定义的Python函数的 namespace ?

c# - 两个大数之间的区别C#

c# - 使用 TPT 方法的多对多 Entity Framework

c# - XslLoadException - 此方法与此类中的另一个方法具有相同的名称和参数类型

java - JAXB:将 XML 标记放在抽象类上

java - Apache Camel - SQL 到 CSV