带有XML文件的Windows Phone

时间:2014-07-30 12:01:15

标签: c# xml windows-phone-8 windows-phone

我尝试填充" ListPicker"来自xml文档。 如果xml只有一个TAG" Produto",ListPicker会正确显示其他属性。但如果有更多的TAG" Produto",错误是"有多个根元素。第7行,第2位。"。

我应该如何编写代码来显示所有TAG" Produto"?

XML:

<produto>
<codigo>1</codigo>
<descricao>Janela</descricao>
<valor>100.00</valor>
</produto>

<produto>
<codigo>2</codigo>
<descricao>Porta</descricao>
<valor>120.00</valor>
</produto>

<produto>
<codigo>3</codigo>
<descricao>Alambrado</descricao>
<valor>80.00</valor>
</produto>

代码:

  private void locChoice(object sender, RoutedEventArgs e)
    {    


        IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
        string filePath = "im.xml";

        if (store.FileExists(filePath))
        {

            try
            {
                XDocument doc = XDocument.Load(store.OpenFile("im.xml", FileMode.Open)); ;
               ProdutoLpk.ItemsSource = from query in doc.Descendants("produto") select query.Value;
              //  string fileData;
               // using (IsolatedStorageFileStream isoStream =
                //   new IsolatedStorageFileStream("it.xml", FileMode.Open, store))
               // {
                  //  using (StreamReader reader = new StreamReader(isoStream))
                 //  {
                     //   fileData = reader.ReadToEnd();
                  //  }
               // }

               // this.ProdutoLpk.ItemsSource = fileData.Split(';');
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

        ProdutoLpk.Open();
        Debug.WriteLine(ProdutoLpk);

    }

    private void Button_Enviar(object sender, RoutedEventArgs e)
    {

        String dados = "\nProduto: " + ProdutoLpk.SelectedItem + "\nQuantidade: " + Qtd.Text;
        MessageBox.Show(dados);

        lista.Text = Qtd.Text + " " + ProdutoLpk.SelectedItem;



    }

2 个答案:

答案 0 :(得分:0)

您必须浏览elements内的xml才能获取代码。

例如:

foreach(var word in xml.Root.Element("produto").Elements());   

有关详细信息,请参阅以下详细信息:

http://social.msdn.microsoft.com/Forums/en-US/a88dea86-ded6-4149-a57f-b586b53940be/get-elements-tags-from-xml-file-using-c?forum=xmlandnetfx

Importing XML in a string array - Windows Phone 7

希望它有所帮助!

答案 1 :(得分:0)

错误消息表明问题在于您的XML而不是C#代码来解析XML。有效的XML只能有单个最外层标记(根元素)。

尝试通过将XML包装在单个根元素中来修复XML,例如:

<produtos>
   <produto>
      <codigo>1</codigo>
      <descricao>Janela</descricao>
      <valor>100.00</valor>
   </produto>
   <produto>
      <codigo>2</codigo>
      <descricao>Porta</descricao>
      <valor>120.00</valor>
   </produto>
   <produto>
      <codigo>3</codigo>
      <descricao>Alambrado</descricao>
      <valor>80.00</valor>
   </produto>
</produtos>