我有一個ObservableCollection項目。我想將它們轉換成XML格式,以便我可以將它們存儲起來供以後使用。我對LINQ有點新,我不確定如何做到這一點。我知道我需要依賴XDocument。但我不知道如何執行查詢並將結果轉換爲字符串格式。使用LINQ將CLR對象寫到XML
有人可以爲我提供一些指針嗎?這似乎是一件容易的事情,如果不能完成,我會感到驚訝。
謝謝,
我有一個ObservableCollection項目。我想將它們轉換成XML格式,以便我可以將它們存儲起來供以後使用。我對LINQ有點新,我不確定如何做到這一點。我知道我需要依賴XDocument。但我不知道如何執行查詢並將結果轉換爲字符串格式。使用LINQ將CLR對象寫到XML
有人可以爲我提供一些指針嗎?這似乎是一件容易的事情,如果不能完成,我會感到驚訝。
謝謝,
我不知道你想要什麼。 您可以創建XElement並使用ToString方法將其轉換爲字符串。 你可以用XDocument做同樣的事情。
我完全不熟悉Silverlight,但它聽起來像您將需要使用XML序列化。通過XML序列化,您可以將對象序列化爲XML表示形式,然後您可以稍後將其從XML反序列化爲對象。
下面是關於XML序列化一些教程和信息在.NET:
你需要Linq to XML。我不能在這裏張貼實際的代碼,因爲我不知道你的數據的結構,但這裏有一個虛擬的例子:
List<Person> people = ...
var doc = new XDocument(
new XElement("People",
from p in people
select new XElement("Person",
new XAttribute("Id", p.Id),
new XElement("LastName", p.LastName),
new XElement("FistName", p.FirstName))));
doc.Save("people.xml");
注意的LINQ是不是在這裏唯一的選擇。另一個非常好的方法是XML序列化。
使用DataContractSerializer是最好的選擇。它旨在完成你所要求的。
優勢超過的XMLSerializer:
選入,而不是選擇退出屬性序列化。這意味着你指定你想要序列化的東西
因爲它是可選的,你可以序列化不僅屬性,而且字段。您甚至可以序列化非公共成員,如私人或受保護的成員。並且你不需要在屬性上設置一個集合(但是沒有一個setter可以序列化,但不是反序列化)
比串行化數據的速度快10%左右,因爲你沒有完全控制數據的方式它是序列化的,可以做很多事情來優化序列化/反序列化過程。
可以瞭解SerializableAttribute並知道它需要被序列化
更多選擇,並在KnownTypes控制
缺點:
根據你的需要,一個缺點可能比所有優點更大...... – 2010-11-21 10:02:04
如果你將.Net序列化爲.Net,那麼它效果很好。使用DataContractSerializer將XML發送到Java;不太好。 – rboarman 2010-11-23 01:13:44