2011-12-21 12 views
0

我正在創建一個接收XML並將其反序列化爲對象的解析器。我使用了兩種不同的模式來生成XML被反序列化的類。 但是,我需要確定在反序列化時使用哪個類。如何確定將XML反序列化爲

的XML看起來是這樣的:

A型

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
<typeA> 
<info> 
</info> 
</typeA> 

B型

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
    <typeB> 
<info> 
    </info> 
</typeB> 

這怎麼能在effecient的方式進行?

+0

這些XML文件是分開的嗎?如果不是,則不應該有第二個XML聲明,並且應該在另一個元素中包含「 ... ...'。 – Polynomial 2011-12-21 13:58:26

+0

是的,單獨的文件 – johan 2011-12-21 14:01:16

+0

爲什麼不在XML中編寫對象類型或類名? – CloudyMarble 2011-12-21 14:02:32

回答

3

在.NET中,序列化程序使用命名空間來確定將哪些類型的XML反序列化爲。

如果您正在實現自定義序列化,我會遵循相同的約定。

您可以從XML文件中檢索命名空間,然後決定將其反序列化到哪種類型。

+0

但是名稱空間未指定 – johan 2011-12-21 14:00:58

+0

@johan:正確的,您需要將XML名稱空間添加到XML文件。 「快捷方式」的方式是使用XPath來「測試」您的XML是否存在用於判定標準的「typeA」或「typeB」元素。 – Leon 2011-12-21 14:03:12

+0

我從服務中獲取它作爲字符串。那麼我需要將它轉換成XMLDocument?沒有其他辦法嗎? – johan 2011-12-21 14:10:41