5

我现在已经搜索了一点,但我无法找到以编程方式从 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 样本生成做任何事情。

4

2 回答 2

10

在做了一些搜索之后。我找到了一个实现了 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");
            }            
        }
于 2013-01-25T10:08:18.747 回答
-1

您可以编写简单的函数将 1 行放入数据表中,然后执行DataTable.WriteXml(string filePath)

像这样的东西:

xmlschema1 schema=new xmlschema1();
//put some test data in table
schema.Persons.AddPersonsRow(...some params);
//generate xml
schema.Persons.WriteXml(filePath);
于 2013-01-18T08:09:35.047 回答