以编程方式从XML Schema生成测试XML

Sti*_*ahl 3 c# xml xsd sample visual-studio

我现在搜索了一下,但是我无法找到一种以编程方式从XML Schema自动生成数据的方法.假设我有这个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> 
Run Code Online (Sandbox Code Playgroud)

我可以使用VS函数"生成示例XML"从此创建XML 在此输入图像描述
有没有办法以编程方式执行此操作?

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

Sti*_*ahl 9

经过一番搜索.我发现一个项目已经实现了一个XML样本发生器.我创建了一个测试解决方案并导入了类.然后我删除了XmlGen.cs文件并创建了我自己的main方法.输出将基于根元素.

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");
            }            
        }
Run Code Online (Sandbox Code Playgroud)

  • 当我检查时,示例代码的链接已失效。有一个存储库似乎包含源代码 - https://github.com/mganss/XmlSchemaClassGenerator/tree/master/XmlSampleGenerator 非常感谢贡献者:-) (2认同)