我有一個數據庫列,其中包含一些XML數據作爲字符串。因此我不知道這個XML所代表的實際類型,我想讀取這個XML的根標籤,而不是反序列化這個類型的完整內容。由於嵌入式XML可能相當大,並且表中包含數千個這些對象,因此我需要一個快速解決方案。我的第一個方法是使用一些字符串魔法(可能使用正則表達式)簡單地提取根標記,通過調用Type.GetType
來獲取類型,然後爲此類型創建序列化程序。但是,我看了XMLReader
,它也支持ValueType
-屬性。在不知道類型的情況下反序列化XML
using (XmlReader reader = XmlReader.Create(new StringReader(myXmlAsString)))
{
reader.MoveToContent(); // get the root-element
Type type = reader.ValueType;
XmlSerializer ser = new XmlSerializer(type);
return ser.Deserialize(reader);
}
我必須面對的問題是,reader.ValueType
總是返回字符串類型,而隨後由根標籤表示的類型。
最後:兩種解決方案中的哪一種會更快?第一個瓶頸應該是獲得tapeName的正則表達式引擎,第二個方法可能是讀取器操作。