2013-12-04 2 views
0

Итак, я пытаюсь десериализовать следующий XML-документ на несколько объектов моего пользовательского типа (ItemModel). Поскольку я разрабатываю платформу Windows 8, я столкнулся с множеством блоков из-за несовместимости с библиотекой. То, что я пытаюсь сделать, - десериализировать каждый ItemModel в объект, чем добавлять их в список какого-то рода. Из того, что у меня есть, код работает, но список не заполняется.Уничтожение XML в нескольких объектах одного и того же типа (для приложения Windows 8)

<?xml version="1.0" encoding="utf-8" ?> 

<Items> 
    <ItemModel> 
    <ID>0</ID> 
    <Name>Apple</Name> 
    <Category>Compost</Category> 
    <ImageWidth>67</ImageWidth> 
    <ImageHeight>100</ImageHeight> 
    <Description>An Apple is a compost item that....</Description> 
    <ImagePath>Graphics\\apple.png</ImagePath> 
    </ItemModel> 
    <ItemModel> 
    <ID>0</ID> 
    <Name>Water Bottle</Name> 
    <Category>Mixed Containers</Category> 
    <ImageWidth>67</ImageWidth> 
    <ImageHeight>100</ImageHeight> 
    <Description>A Water bottle is a mixed container item that...</Description> 
    <ImagePath>Graphics\\Bottle.png</ImagePath> 
    </ItemModel> 
</Items> 

Примечание: У меня также возникли проблемы с использованием XmlReader. Это читатель, которому мы равны нулю, даже после того, как я использую XmlReader.Create().

спасибо.

+0

Как получить свои данные? Is - строка, файл, поток? – MarcinJuraszek

+0

Из файла. Я не мог использовать FileStream, который использовался большинством примеров, потому что он не поддерживается. – YoussefE

ответ

0

если вы читаете из файла .xml и отображения в веб-браузере и ваш код за это C#, вы можете сделать что-то вроде этого:

protected void Page_Load(object sender, EventArgs e) 
{     
     ReadXmlFile(Server.MapPath("~/XMLFiles/Items.xml")); 
} 

private void ReadXmlFile(string fileName) 
{ 
    string parentElementName = ""; 
    string childElementName = ""; 
    string childElementValue = ""; 
    bool element = false; 
    lblMsg.Text = ""; 

    XmlTextReader xReader = new XmlTextReader(fileName); 
    while (xReader.Read()) 
    { 
     if (xReader.NodeType == XmlNodeType.Element) 
     { 
      if (element) 
      { 
       parentElementName = parentElementName + childElementName + "<br>"; 
      } 
      element = true; 
      childElementName = xReader.Name; 
     } 
     else if (xReader.NodeType == XmlNodeType.Text | xReader.NodeType == XmlNodeType.CDATA) 
     { 
      element = false; 
      childElementValue = xReader.Value; 
      lblMsg.Text = lblMsg.Text + "<b>" + parentElementName + "<br>" + childElementName + "</b><br>" + childElementValue; 

      parentElementName = ""; 
      childElementName = ""; 
     } 
    } 
    xReader.Close(); 
    } 
} 
+0

Благодарим вас за пример. Я не думаю, что XmlTextReader поддерживается .net для приложений магазина Windows (http://msdn.microsoft.com/en-us/library/System.Xml(v=vs.110).aspx). Не могли бы вы узнать об альтернативах? – YoussefE

+1

см. Этот http://stackoverflow.com/questions/9477158/metro-application-how-to-read-xml-api, и здесь у вас есть ответ на эту внешнюю ссылку http://dandar3.blogspot.in/2011/ 11/parsing-large-xmls-with-xmlreader-and.html –

+0

Windows Phone 8 - http://msdn.microsoft.com/en-us/libr...v=vs.105).aspx Windows 8 - http://msdn.microsoft.com/en-us/libr.../br230232.aspx –

Смежные вопросы