Как поместить XML в список словарей с C # на Windows Phone 7 - PullRequest
0 голосов
/ 14 декабря 2011

Вот XML у меня в файле:

СПЕЦИАЛЬНОЕ ПРИМЕЧАНИЕ: Это вопрос для Windows Phone 7, а не общего C #

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <item>
        <date>01/01</date>
        <word>aberrant</word>
        <def>straying from the right or normal way</def>
    </item>

    <item>
        <date>01/02</date>
        <word>Zeitgeist</word>
        <def>the spirit of the time.</def>
    </item>
</rss>

Мне нужно это в List (он же массив) объектов Dictionary. Каждый Dictionary представляет <item>. Каждый элемент, подобный <word>, представляет собой key с типом string, а каждое значение, подобное «Zeitgeist», представляет собой value с типом string.

Есть ли простой способ сделать это? Я из Objective-C и iOS, так что это совершенно новое для меня .NET и C #.

Ответы [ 3 ]

2 голосов
/ 14 декабря 2011

LINQ-to-XML делает это довольно легко.Вот полный пример:

        public static void Main(string[] args)
        {
            string xml = @"
<rss version='2.0'>
    <item>
        <date>01/01</date>
        <word>aberrant</word>
        <def>straying from the right or normal way</def>
    </item>

    <item>
        <date>01/02</date>
        <word>Zeitgeist</word>
        <def>the spirit of the time.</def>
    </item>
</rss>";
            var xdoc = XDocument.Parse(xml);
            var result = xdoc.Root.Elements("item")
                .Select(itemElem => itemElem.Elements().ToDictionary(e => e.Name.LocalName, e => e.Value))
                .ToList();

        }

Вместо загрузки из строки с помощью XDocument.Parse (), вы, вероятно, сделаете XDocument.Load (имя файла), но в любом случае вы получите объект XDocument для работы (Iсделал строку только для примера).

1 голос
/ 14 декабря 2011

Вы можете использовать Linq-Xml для этого:

var doc = XDocument.Parse(xml); //xml is a String with your XML in it.
doc
.Root                         //Elements under the root element.
.Elements("item")             //Select the elements called "item".
.Select(                      //Projecting each item element to something new.
    item =>                   //Selecting each element in the item.
        item                  //And creating a new dictionary using the element name
        .Elements()           // as the key and element value as the value. 
        .ToDictionary(xe => xe.Name.LocalName, xe => xe.Value))
.ToList();
0 голосов
/ 14 декабря 2011

Да, есть простой способ, он называется LINQ to XML.

Некоторые ресурсы:

Синтаксический анализ XML с C #

LINQ для чтения XML

http://msdn.microsoft.com/en-us/library/bb387098.aspx

Надеюсь, это поможет ...

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