Запись объектов CLR в XML с помощью LINQ - PullRequest
1 голос
/ 21 ноября 2010

У меня есть элементы ObservableCollection. Я хочу преобразовать их в формат XML, чтобы сохранить их для дальнейшего использования. Я немного новичок в LINQ, и я не уверен, как это сделать. Я знаю, что мне нужно положиться на XDocument. Но я не уверен, как выполнить запрос и получить результаты в виде строки.

Может кто-нибудь дать мне несколько советов? Это просто кажется такой легкой задачей, я был бы удивлен, если бы это не могло быть сделано.

Спасибо,

Ответы [ 4 ]

4 голосов
/ 21 ноября 2010

Вам нужно 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.

2 голосов
/ 21 ноября 2010

Использование DataContractSerializer - ваш лучший выбор.Он предназначен для выполнения именно того, о чем вы просите.

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer(v=VS.95).aspx

Преимущества по сравнению с XMLSerializer:

  1. Отказ, а не отказсвойства для сериализации.Это означает, что вы указываете, что вы хотите сериализовать

  2. Поскольку это опция, вы можете сериализовать не только свойства, но и поля.Вы даже можете сериализовать непубличных участников, таких как частные или защищенные участники.И вам также не нужно устанавливать набор для свойства (однако без установщика вы можете сериализовать, но не десериализовать)

  3. примерно на 10% быстрее, чем XmlSerializer для сериализации данных, потому что, поскольку вы нене имеет полного контроля над тем, как он сериализуется, многое можно сделать, чтобы оптимизировать процесс сериализации / десериализации.

  4. Может понимать атрибут SerializableAttribute и знать, что он должен бытьсериализованный

  5. Дополнительные параметры и контроль над KnownTypes

Недостатки:

  1. Отсутствует контроль над сериализацией объектаза пределами установки названия и порядка
0 голосов
/ 21 ноября 2010

Я совсем не знаком с Silverlight, но, похоже, вам потребуется использовать сериализацию XML. Сериализация XML позволяет сериализовать объект в представление XML, которое затем можно затем десериализовать из XML обратно в объект.

Вот несколько учебных пособий и информации о сериализации XML в .NET:

0 голосов
/ 21 ноября 2010

Я не уверен, что вы хотите.Вы можете создать XElement и преобразовать его в строку с помощью метода ToString.Вы можете сделать то же самое с XDocument.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...