代码之家  ›  专栏  ›  技术社区  ›  apandit

为序列化XML生成XSD

  •  0
  • apandit  · 技术社区  · 15 年前

    目前,我有一个XML文件,看起来像这样…

    
    <ArrayOfService>
        <Service>
            <Name>
                Something
            </Name>
            <Id>
                8003
            </Id>
        </Service>
    </ArrayOfService>
    
    

    这是从一个看起来像这样的类自动生成的…

    
    public class Service{
        public string Name;
        public int Id;
    
        public Service(){
        }
    }
    

    要将类转换为XML,我使用…

    
    XmlSerializer xs = new XmlSerializer( typeof(Service) );
    xs.Serialize( context.Response.OutputStream, FunctionReturnsTypeService() );
    

    有没有什么方法可以像这样自动生成XSD?

    编辑:

    另外,在序列化XML时,是否有任何方法可以将这个模式添加到XML中?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Cheeso    15 年前

    xsd.exe工具(%netsdk20%\bin\xsd.exe)从XML文档推断类型。

    (还可以使用/c选项从XML文档或架构生成类。)

    如果要将对架构的引用嵌入到XML文档中,请参见以下内容: http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.xml/2006-12/msg00040.html

    总结:
    用xmltattribute属性修饰类型的成员,将“schemaLocation”指定为attr的名称,以及“ http://www.w3.org/2001/XMLSchema-instance “作为该属性的命名空间。如C中的这个例子#

    [System.Xml.Serialization.XmlAttributeAttribute("schemaLocation",
        Namespace = System.Xml.Schema.XmlSchema.InstanceNamespace)]
    private string xsiSchemaLocation = "YourSchema.xsd";