如何在 C# 中动态创建 XML 架构?

发布于 2024-10-27 03:12:09 字数 235 浏览 2 评论 0原文

我尝试使用传统的 XElement 和 XAttribute 类从 C# 动态创建 XML 架构 (XSD),但使用冒号指定任何名称都是无效的。也就是说,我无法创建元素使用该代码

... = new XElement("xs:element");

是因为不允许使用“:”。

那么在 C# 中动态构建模式的正确方法是什么?

I try to dynamically create an XML schema (XSD) from C#, using the conventional XElement and XAttribute classes, but it is not valid to specify any names with colons. That is, I cannot create the element <xs:element> using the code

... = new XElement("xs:element");

because ":" is not allowed.

What is the correct way of dynamically building a schema in C# then?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

時窥 2024-11-03 03:12:09

要创建架构,您应该使用 XmlSchema 类。下面的链接提供了以编程方式创建的综合示例:

http://msdn.microsoft.com/en-us/library/9ta3w88s.aspx

例子:

static void Main(string[] args)
{
    var schema = new XmlSchema();

    // <xs:element name="myElement" type="xs:string"/>
    var myElement = new XmlSchemaElement();
    schema.Items.Add(myElement);
    elementCat.Name = "myElement";
    elementCat.SchemaTypeName = 
        new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");

    // writing it out to any stream
    var nsmgr = new XmlNamespaceManager(new NameTable());
    nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
    schema.Write(Console.Out, nsmgr);

    Console.ReadLine();
}

To create schemas, you should be using the XmlSchema class. The link below provides a comprehensive example of creating one programmatically:

http://msdn.microsoft.com/en-us/library/9ta3w88s.aspx

Example:

static void Main(string[] args)
{
    var schema = new XmlSchema();

    // <xs:element name="myElement" type="xs:string"/>
    var myElement = new XmlSchemaElement();
    schema.Items.Add(myElement);
    elementCat.Name = "myElement";
    elementCat.SchemaTypeName = 
        new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");

    // writing it out to any stream
    var nsmgr = new XmlNamespaceManager(new NameTable());
    nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
    schema.Write(Console.Out, nsmgr);

    Console.ReadLine();
}
念三年u 2024-11-03 03:12:09

创建新的 XML 元素时,您应该注意冒号之前的部分(在本例中为 xs)实际上是 XML 命名空间的别名(在 XSD 的情况下为 xs 通常指的是 http://www.w3.org/2001/XMLSchema)。因此,要继续使用 XDocument 构建 XSD,您需要使用:

XNamespace ns = new XNamespace("http://www.w3.org/2001/XMLSchema");
... = new XElement(ns + "element");

请参阅此处的示例:
http://msdn.microsoft.com/en-us/library/bb292758.aspx

When creating new XML elements, you should be aware that the part before the colon (in this case, xs) is actually an alias for the XML namespace (in the case of an XSD, xs usually refers to http://www.w3.org/2001/XMLSchema). So, to continue using XDocument to build your XSD, you would want to use:

XNamespace ns = new XNamespace("http://www.w3.org/2001/XMLSchema");
... = new XElement(ns + "element");

See the example here:
http://msdn.microsoft.com/en-us/library/bb292758.aspx

我不在是我 2024-11-03 03:12:09

我写了一个关于该主题的博客。您可以使用 DataTable 来保存架构。

I wrote a blog about that very subject. You can use a DataTable to save a schema.

所有深爱都是秘密 2024-11-03 03:12:09

如果你想创建xml,你应该使用XmlWriter类

If you want to create xml, you should use XmlWriter class

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文