[英]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.