以编程方式从XML模式生成测试XML [英] Generate a test XML from XML Schema programmatically

查看:77
本文介绍了以编程方式从XML模式生成测试XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经搜索了一下,但是我无法找到一种以编程方式从XML Schema自动生成数据的方法.可以说我有这个XML模式:

I have searched for a bit now, but i'm not able to find a way to autogenerate data from a XML Schema programmatically. Lets say I have this XML schema:

<xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name ="Persons">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="Person">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="FirstName" type="xs:string" />
            <xs:element name="LastName" type="xs:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element> 

我可以使用VS函数"Generate Sample XML"从中创建XML
有没有办法通过编程方式做到这一点?

I am able to create a XML from this using the VS function "Generate Sample XML"
Is there a way to do this programmatically?

指定.我不想自己创建所有对象并以编程方式插入数据.我希望它像VS中的"Generate Sample XML"一样自动创建对象和属性.原因是我想更改XSD,而不必对xml样本生成做任何事情.

To specify. I do not want to create all the objects and insert data programmatically myself. I would like for it to create the objects and attributes automatically just like the "Generate Sample XML" in VS. The reason for this is that i would like to change the XSD without having to do anything about xml sample generation.

推荐答案

.我发现一个实现了xml示例生成器的项目.我创建了一个测试解决方案,并导入了这些类.然后,我删除了XmlGen.cs文件并创建了自己的主方法.输出将基于根元素.

after doing some searching. I have found a project that have implemented a xml sample generator. I created a test solution and imported the classes. Then i deleted the XmlGen.cs file and created my own main method. The output will be based on the root element.

public static void Main(string[] args)
        {
            using (var stream = new MemoryStream(File.ReadAllBytes("schema.xsd")))
            {
                var schema = XmlSchema.Read(XmlReader.Create(stream ), null);
                var gen = new XmlSampleGenerator(schema, new XmlQualifiedName("rootElement"));
                gen.WriteXml(XmlWriter.Create(@"c:\temp\autogen.xml"));
                Console.WriteLine("Autogenerated file is here : c:\temp\autogen.xml");
            }            
        }

这篇关于以编程方式从XML模式生成测试XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆