Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式从XML模式生成测试XML_C#_Xml_Visual Studio_Xsd_Sample - Fatal编程技术网

C# 以编程方式从XML模式生成测试XML

C# 以编程方式从XML模式生成测试XML,c#,xml,visual-studio,xsd,sample,C#,Xml,Visual Studio,Xsd,Sample,我现在已经搜索了一些,但是我找不到一种通过编程从XML模式自动生成数据的方法。假设我有这个XML模式: <xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name ="Persons"> <xs:complexType> <xs:sequence> <xs:element name="Person"> <xs:complexType>

我现在已经搜索了一些,但是我找不到一种通过编程从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
有没有一种方法可以通过编程实现这一点


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

您可以编写简单的函数,将一行放入数据表,然后执行
DataTable.WriteXml(字符串文件路径)

诸如此类:

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

在做了一些搜索之后。我找到了一个实现了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");
            }            
        }

在VS内部还是外部?也就是说,您可以在VS中通过编写一个触发此菜单选项的插件以编程方式完成此操作。最好是独立于IDE的插件。但是我对所有的解决方案都持开放态度,不管是依赖还是不依赖。我仍然没有找到解决方案。因此,如果有人有任何可能的解决方案,我将不胜感激。这会生成一个包含示例数据的xml吗?这会生成xml,比如…一些数据…一些数据…更多的Persons标记,但这不是自动生成的。我必须手动放置所有对象。我希望有一些方法可以自动插入数据并创建示例对象。当我检查时,示例代码的链接已失效。这里有一个似乎包含源代码的存储库-非常感谢贡献者:-)