我有我的問題給你。我想以特定的方式讀取XML數據,但我不知道如何處理它。我會爲你的建議感到高興。Xml數據反序列化
想象一下,我有XML就像這個例子:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfAbstractData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- COMMON PART -->
<AbstractData xsi:type="Test1Data">
<Enable>true</Enable>
<Id>1</Id>
<Count>3</Count>
<Debug>false</Debug>
<Error>true</Error>
<Info>
.....
</Info>
<!-- SPECIFIC PART -->
.....
</AbstractData>
<AbstractData xsi:type="Test2Data">
<!-- COMMON PART -->
<Enable>true</Enable>
<Id>2</Id>
<Count>3</Count>
<Debug>false</Debug>
<Error>false</Error>
<Info>
.....
</Info>
<!-- SPECIFIC PART -->
.....
</AbstractData>
<AbstractData xsi:type="Test3Data">
<!-- COMMON PART -->
<Enable>true</Enable>
<Id>3</Id>
<Count>3</Count>
<Debug>false</Debug>
<Error>true</Error>
<Info>
.....
</Info>
<!-- SPECIFIC PART -->
.....
</AbstractData>
</ArrayOfAbstractData>
正如你可以看到,即時通訊序列化在表3個不同的對象。這些對象具有稱爲AbstractData的公共基類。
現在我想讀取這些數據,但以非常特定的方式。首先,我只想閱讀通用部分(抽象類的屬性)。基於這些屬性,我將決定類Test1Data,Test2Data,...是否衆所周知。如果他們是衆所周知的,我會將XML文件的其餘部分變成紅色。簡單地說,我想避免在Abstract Base類中使用XmlInclude,因爲Im在插件系統中使用它,而不是在反序列化時使用每個類。
希望你明白我的意圖。
感謝您的建議
嗨,歡迎來到StackOverflow。當您發佈有關您編寫的某些代碼無法正常工作的問題時,您需要提供三件事情。 1.你所看到的行爲以及你認爲這是錯誤的原因; 2.展示你所看到的行爲所需的最少代碼和/或步驟;以及3.你希望看到的行爲。除非你提供這些東西,否則我們很難幫助你。 –
謝謝,但我不需要代碼。我來這裏只是想知道如何去做。我解釋了我想要做什麼以及我試圖避免什麼(XmlInclude)的意圖。我完全能夠讀取這個Xml,但只有當像Test1Data,Test2Data,...這樣的類是已知的。代碼是不需要的。我不能讀取子類(特定部分)未知時的基類屬性(公共部分)。 – Turdus
可以使用多種不同的方法來完成對XML文件的讀取。您可以使用序列化來讀取整個或部分XML文件並將數據存儲到類中。在使用此方法之前,您需要定義類。我推薦的常見數據。然後可以使用XmlDocument類或XDocument類讀取xml的可選部分。 – jdweng