我有一个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>
答案 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中编组和解组。