один сложный бизнес XML для десериализации объекта в Silverlight, чтобы управлять ими всеми - PullRequest
0 голосов
/ 29 сентября 2011

Я уже некоторое время искал учебники и сообщения о том, как десериализовать сложный XML-документ в объекты и использовать его в приложении silverlight. Я видел много уроков и постов за 2008, 2009 и многие из них, которые явно не работают .. Работать с Hello World или классом "Person" довольно легко, но я не могу найти ничего хорошего о некоторых сложных XML-файлах. и объект действия по данным. 3 строки парсинг-кода не являются проблемой, но как выглядит код c #? Как мне создать все эти классы? Как работать с этими объектами?

Предположим, вы получаете из веб-службы поток или в вашей логике есть строка, подобная этой. У вас есть пространства имен, атрибуты и 6 дочерних узлов.

<?xml version="1.0" encoding="UTF-8"?>
<om:root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:om="http://www.opengis.net/om/1.0">
<a name="a1">
<b>
    <c id="1" name="C1">
        <d id="1" name="D1">My name is D1</d>
        <d id="2" name ="D2">My name is D2</d>
        <e>
            <f>this is f1</f>
        </e>
    </c>
    <c id="2" name="C2">
        <d id="3" name="D3">My name is D3</d>
        <e>
            <f>this is f2</f>
        </e>
    </c>
</b>
<b>
    <c id="3" name="C3">
        <d id="4" name="D5">My name is D4</d>
        <d id="5" name="D5">My name is D5</d>
        <d id="6" name="D6">My name is D6</d>
        <d id="7" name="D7">My name is D7</d>
        <e>
            <f>this is f3</f>
        </e>
    </c>
</b>
</a>
</om:root>

1) Существует ли какой-либо веб-сайт, который может создавать классы и код на c #, чтобы иметь возможность работать / хранить данные в XML? Вы публикуете свой XML-файл, и вы получаете исходный код для ваших классов C #. Что-то вроде www.json2csharp.com

2) Как будут выглядеть мои классы, свойства и т. Д.? Я хотел бы увидеть один стандартный современный современный способ работы со свойствами, атрибутами, списками и т. Д. Полный код с использованием «с помощью xxx»! Пожалуйста, давайте использовать стандартный класс сериализатора, который будет работать с Silverlight!

3) Некоторый объект действия. Как

  1. дайте мне все имя: c в списке
  2. дайте мне значение от f в номе: c id = "2"
  3. положить все b в список
  4. дайте мне все атрибуты из name = "" FROM всех тестов: d узлов

только некоторые серьёзные практические запросы, а не те easymode get.me.person.name или book.name

edit: Хорошо, может быть, это сложно. Может кто-нибудь опубликовать некоторые ссылки, где есть хотя бы своего рода учебник или блог с некоторыми примерами?

Ответы [ 2 ]

0 голосов
/ 29 сентября 2011

Я сам начинающий, но на вашем месте я бы обязательно посмотрел класс System.Xml.Linq. Когда вы уже определитесь со своим классом, десериализовать ваш документ будет довольно просто. Ниже я вставляю фрагмент из моего кода, который делает именно то, что вы хотите. Это для WP7, но кроме части IsolatedStorage все должно быть одинаково.

ItemTemplate item = new ItemTemplate();
        using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("/Items.xml", FileMode.Open))
            {
                XElement doc = XElement.Load(stream);
                IEnumerable<XElement> itemTest = from el in doc.Elements("item")
                                                 where (string)el.Element("id") == itemId
                                                 select el;
                foreach (XElement el in itemTest)
                {
                    item.ItemContent = el.Element("content").Value;
                    item.Status = Convert.ToBoolean(el.Element("status").Value);
                    item.Notes = el.Element("notes").Value;
                    item.Location = el.Element("location").Value;
                    item.Deadline = Convert.ToDateTime(el.Element("deadline").Value);
                }                  
            }
        }
0 голосов
/ 29 сентября 2011

Для генерации классов c # из xml вы можете использовать инструмент Microsoft xsd.exe .

...