繁体   English   中英

从XML设计强类型对象

[英]Design Strongly typed object from XML

我有几个需要使用的XML文件,而且我一直使用XElement对象,并通过属性名称或XElement的值提取数据。

我知道必须有一种在C#中使用XML的更好方法。 从XML文件自动生成或手动生成强类型对象的最佳方法是什么?

xml的形式为

<Group id="####">
    <title>Some Title</title>
    <description>some description</description>
    <Rule id="ID_##" severity="medium" weight="10.0">
        <version>1.001</version>
        <title>Another Title</title>
        <description>Very long description</description>
        <fixtext fixref="F-31r1_fix">Description of fix</fixtext>
        <fix id="F-31r1_fix"/>
        <check system="C-7883r4_chk">
            <check-content-ref name="M" href="URI"/>
            <check-content>Content</check-content>
        </check>
    </Rule>
</Group>

如果我可以将XML文件解析为List<Group> ,那将是最好的。

我能想到的唯一方法是手动创建组,规则和检查对象并手动分配数据。 如果有更好,更自动化的方式来进行此操作,请告诉我!

您可以使用xsd.exe(随Windows SDK一起安装,但取决于版本的不同位置-我的当前位于C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Bin )来生成和xsd从文件或CS代码文件中获取。

例如:

xsd.exe myFile.xml

将在xml文件的位置获取myFile.xsd。

然后,

xsd.exe myFile.xsd /c 

将为您提供一个带有已定义类的.cs文件。 尝试xsd.exe /? 以获得完整选项(也可以指定名称空间等)。

查看Linq到XSD

LINQ to XSD技术为.NET开发人员提供了对类型化XML编程的支持。 LINQ to XSD为LINQ项目(.NET语言集成查询)做出了贡献; 特别是,LINQ to XSD增强了现有的LINQ to XML技术。

如果您有XML的架构,则可以使用xsd.exe(Windows SDK),svcutil.exe(WCF)或(我个人喜好的)开源替代方案( Xsd2Code )之类的工具生成类。

您可以在类上添加注释,然后使用XmlSerializer将类实例从XML序列化/反序列化-如果需要更自定义的方法,则让您的类也实现IXmlSerializable然后将序列化/反序列化代码放入类中。

如果您能够更改XML格式以满足您的需求,那么我知道的一种方法就是使用WSDL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM