我何时应该在阅读xml时使用xml架构(.xsd)?

时间:2009-05-27 03:53:43

标签: c# xml xsd

我有一个XML文件,其中包含数据源的配置数据,以及“dataseries”元素中保存的相关查询。

因为我并不真的需要由XML构成的域对象,而只是设置读取和用于配置连接等。我想知道使用我定义的XML模式是否有任何优势?

我正在使用LINQ to XML来读取我的XML,并且最初认为使用强类型XML是个好主意。

我应该使用.xsd还是过度杀伤?

模拟XML文件:

 <?xml version="1.0" encoding="utf-8" ?>
<datasource name=" Datasource" cache="true">
  <database>
    <connection>
      <provider-name>sqlServer6.0</provider-name>
      <source name="E5"
            connectionString=""/>
    </connection>
    <update-interval>30</update-interval>
    <minimum-update-interval>2</minimum-update-interval>
  </database>
  <dataseries name="" identifier="e5">
    <graph-type></graph-type>
      <query>
        SELECT Period, Price
        FROM PriceUS
        WHERE Date = @date
      </query>
  </dataseries>
  <dataseries name="" identifier="e52">
    <graph-type></graph-type>
    <query>
      SELECT Period, Price
      FROM PriceUS
      WHERE Date = @date
    </query>
  </dataseries>
</datasource>

3 个答案:

答案 0 :(得分:4)

有两个级别的“正确”XML文档:well-formed and valid。 格式良好意味着它符合XML规范,有效意味着它符合您的架构。如果您接受来自完全陌生人的XML文档,在继续前进之前检查文档的有效性通常是个好主意。

如前所述,XML模式也可用于生成XML数据绑定实体。将服务或架构发布到全局或客户端时,架构文档可用作规范。然后,世界或您的客户可以使用XSD文件来验证或数据绑定到您交换的XML文档。

答案 1 :(得分:1)

从技术上讲,XML中有两种正式的模式类型。有原始的模式语法,称为文档类型定义(DTD),它是古代SGML时代的延续。然后是W3C标准XSD,它与现代数据更加兼容。

我提到这一点的唯一原因是您可能会收到使用DTD描述的XML文件,您可能需要知道如何处理它。

但请朋友们不要让朋友为新应用程序创建DTD。

答案 2 :(得分:0)

当您想要验证 XML时,架构很好,例如,确保某些元素存在或具有一组有限的值。如果您要使用XML进行大量工作,并且将XML转换为C#对象会更容易,那么模式也很好 - 在这种情况下,您可以使用xsd.exe代码生成器生成C#对象可以从XML中编组和解组。