我现在搜索了一下,但是我无法找到一种以编程方式从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>
我可以使用VS函数“Generate Sample XML”从中创建XML
有没有办法以编程方式执行此操作?
编辑:指定。我不想自己创建所有对象并以编程方式插入数据。我想让它自动创建对象和属性,就像VS中的“生成示例XML”一样。这样做的原因是我想更改XSD而无需对xml样本生成做任何事情。
答案 0 :(得分:9)
做了一些搜索。我找到了project已经实现了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");
}
}
答案 1 :(得分:0)
您可以将简单函数写入数据表中,然后执行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);