生成XML架构测试XML编程(Generate a test XML from XML Schema

2019-07-18 09:27发布

我已经寻找了一下现在,但我不能找到一种方法以编程方式从XML模式自动生成数据。 比方说我有这样的XML架构:

<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函数创建一个XML“生成示例XML”
有没有一种方法以编程方式做到这一点?

编辑:要指定。 我不想创建所有对象和编程方式插入的数据自己。 我想它来创建对象,就像在VS.“生成示例XML”自动属性 这样做的原因是,我想改变XSD无需做关于XML样本生成任何东西。

Answer 1:

搜索一下。 我发现一个项目已经实现了一个XML样本发生器。 我创建了一个测试解决方案和进口类。 然后,我删除了XmlGen.cs文件,并创建了自己的主要方法。 输出将根据在根元素。

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");
            }            
        }


Answer 2:

你可以写放1行简单的功能为您的数据表,之后执行DataTable.WriteXml(string filePath)

Somethig这样的:

xmlschema1 schema=new xmlschema1();
//put some test data in table
schema.Persons.AddPersonsRow(...some params);
//generate xml
schema.Persons.WriteXml(filePath);


文章来源: Generate a test XML from XML Schema programmatically