visual studio partir online generate create crear convert c# xml visual-studio xsd sample

studio - xsd to xml c#



Generar un XML de prueba a partir de un esquema XML mediante programaciĆ³n (2)

He buscado un poco ahora, pero no puedo encontrar una manera de autogenerar datos desde un esquema XML programáticamente. Digamos que tengo este esquema 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>

Puedo crear un XML a partir de esto usando la función VS "Generate Sample XML"
¿Hay alguna manera de hacer esto programáticamente?

Editar: para especificar. No quiero crear todos los objetos e insertar datos programáticamente yo mismo. Me gustaría que cree los objetos y atributos automáticamente como el "Generar XML de muestra" en VS. La razón de esto es que me gustaría cambiar el XSD sin tener que hacer nada acerca de la generación de muestras xml.


Puede escribir una función simple para poner 1 fila en su tabla de datos y luego ejecutar DataTable.WriteXml(string filePath)

Somethig así:

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


después de hacer algunas búsquedas. Encontré un proyecto que implementó un generador de muestras xml. Creé una solución de prueba e importé las clases. Luego eliminé el archivo XmlGen.cs y creé mi propio método principal. La salida se basará en el elemento raíz.

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