zoukankan      html  css  js  c++  java
  • XML架构使用Xml架构对象模型

    如何使用 Xml 架构对象模型

    此示例阐释如何将两个 XML 架构定义语言 (XSD) 架构读取到 SchemaCollection 中,浏览它们表示的架构,并创建表示该架构的虚构 XML 输出。

    此示例显示如何使用 XmlSchemaCollection 缓存和检索多个架构,并说明架构对象模型 (SOM) 如何加载和保存有效的 XSD 架构。您也可以使用 SOM 创建使用强类型类的内存中架构。

    为了说明如何浏览 SOM,此示例输出已加载到 SchemaCollection 中的两个 XSD 架构的格式化版本。然后,该示例创建一个 XML 流,以举例说明给定架构的用法。

     
    VB XmlSchemaObjectModel.aspx

    [运行示例] | [查看源代码]

    该示例首先创建一个最终要输出到屏幕上的 XmlTextWriter。该示例创建它的目的是为了利用 XmlTextWriter 的各种方法,以生成格式良好的 XML。这些方法有 WriteStartElement、WriteEndElement 和 WriteAttributeString 等等。然后,该示例创建一个 XmlNameTable,并将该名称表添加到 XmlSchemaCollection。在 XmlSchemaCollection 中,该示例读取两个唯一的 XSD 架构。最后,该示例将 XmlSchemaCollection 中的每个架构写到屏幕上,后面是对一些示例 XML 使用该架构的例子。

    ...
                myXmlTextWriter = new XmlTextWriter(Console.Out);
                myXmlTextWriter.Formatting = Formatting.Indented;
                myXmlTextWriter.Indentation = 2;
                ...
                XmlNameTable myXmlNameTable = new NameTable();
                ...
                XmlSchemaCollection myXmlSchemaCollection = new XmlSchemaCollection(myXmlNameTable);
                ...
                myXmlSchemaCollection.Add(null, args[0]);
                ...
                myXmlSchemaCollection.Add(null, args[1]);
                ...
                foreach(XmlSchema myTempXmlSchema in myXmlSchemaCollection)
                {
                myXmlSchema = myTempXmlSchema;
                ...
                // Write out the various schema parts
                WriteXSDSchema();
                ...
                // Write out an example of the XML for the schema
                WriteExample();
                ...
                }
                
    C# VB  

    下列代码中的函数将 XSD 架构写到屏幕上。从本质上说,这些函数依次通过 XmlSchema 中的每项,确定其类型,然后设置该项输出到屏幕上的格式。

        // Write out the XSD
                void WriteXSDSchema()
                {
                myXmlTextWriter.WriteStartElement("schema", XmlSchema.Namespace);
                myXmlTextWriter.WriteAttributeString("targetNamespace", myXmlSchema.TargetNamespace);
                foreach(XmlSchemaInclude include in myXmlSchema.Includes)
                {
                myXmlTextWriter.WriteStartElement("include", XmlSchema.Namespace);
                myXmlTextWriter.WriteAttributeString("schemaLocation", include.SchemaLocation);
                myXmlTextWriter.WriteEndElement();
                }
                foreach(object item in myXmlSchema.Items)
                {
                if (item is XmlSchemaAttribute)
                WriteXmlSchemaAttribute((XmlSchemaAttribute)item);      //attribute
                else if (item is XmlSchemaComplexType)
                WriteXmlSchemaComplexType((XmlSchemaComplexType)item);  //complexType
                else if (item is XmlSchemaSimpleType)
                WriteXmlSchemaSimpleType((XmlSchemaSimpleType)item);    //simpleType
                else if (item is XmlSchemaElement)
                WriteXmlSchemaElement((XmlSchemaElement)item);          //element
                else if (item is XmlSchemaAnnotation)
                WriteXmlSchemaAnnotation((XmlSchemaAnnotation)item);    //annotation
                else if (item is XmlSchemaAttributeGroup)
                WriteXmlSchemaAttributeGroup((XmlSchemaAttributeGroup)item); //attributeGroup
                else if (item is XmlSchemaNotation)
                WriteXmlSchemaNotation((XmlSchemaNotation)item);        //notation
                else if (item is XmlSchemaGroup)
                WriteXmlSchemaGroup((XmlSchemaGroup)item);              //group
                else
                Console.WriteLine("Not Implemented.");
                }
                myXmlTextWriter.WriteEndElement();
                }
                
    C# VB  

    下列代码中的函数写出验证为架构的 XML 的样式。从本质上说,这些函数依次通过 XmlSchema 中的每项,在确定其类型后,使用一些示例数据设置该项输出到屏幕上的格式。

        // Write out the example of the XSD usage
                void WriteExample()
                {
                foreach(XmlSchemaElement element in myXmlSchema.Elements.Values)
                WriteExampleElement(element);
                }
                // Write some example elements
                void WriteExampleElement(XmlSchemaElement element)
                {
                myXmlTextWriter.WriteStartElement(element.QualifiedName.Name, element.QualifiedName.Namespace);
                if (element.ElementType is XmlSchemaComplexType)
                {
                XmlSchemaComplexType type = (XmlSchemaComplexType)element.ElementType;
                if (type.ContentModel != null)
                Console.WriteLine("Not Implemented for this ContentModel");
                WriteExampleAttributes(type.Attributes);
                WriteExampleParticle(type.Particle);
                }
                else
                WriteExampleValue(element.ElementType);
                myXmlTextWriter.WriteEndElement();
                }
                
    C# VB  

    摘要

    1. 架构对象模型 (SOM) 加载和保存有效的 XSD 架构。
    2. SOM 提供了一种创建使用强类型类的内存中架构的简便方法。
    3. 您可以使用 XmlSchemaCollection 对象缓存和检索多个架构。
    4. SOM 通过 XmlSchemaCollection 使用 XmlValidatingReader。
  • 相关阅读:
    14.3.1选择选项
    14.3 选择框表单
    14.2.4HTML5约束API验证
    input标签之外是否一定添加form标签
    14.2.3自动切换焦点
    php设计模式---抽象模式模式
    php设计模式---简单工厂模式
    git基本教程,每天更新
    第5章 卷积神经网络
    第3章 深度学习基础
  • 原文地址:https://www.cnblogs.com/chorrysky/p/584528.html
Copyright © 2011-2022 走看看