簡體   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