【问题标题】:Generate a test XML from XML Schema programmatically以编程方式从 XML Schema 生成测试 XML
【发布时间】:2013-01-01 21:23:09
【问题描述】:

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

【问题讨论】:

  • VS 内部还是外部?也就是说,您可以通过编写触发此菜单选项的插件在 VS 中以编程方式完成。
  • 最好是独立于 IDE 的东西。但我对所有解决方案都持开放态度 VS 依赖与否。
  • 我还没有找到解决办法。因此,如果有人有任何可能的解决方案,我将不胜感激。

标签: c# xml visual-studio xsd sample


【解决方案1】:

经过一番搜索。我找到了一个实现了 xml 示例生成器的project。我创建了一个测试解决方案并导入了这些类。然后我删除了 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");
            }            
        }

【讨论】:

【解决方案2】:

您可以编写简单的函数将 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);

【讨论】:

  • 这会生成带有示例数据的 xml 吗?
  • 这将生成像 ...some data ...some data ...more Persons tags 这样的xml
  • 但这不是自动生成的。我必须手动放置所有对象。我想要一些插入数据并自动创建示例对象的方法。
猜你喜欢
  • 2011-03-09
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多