我尝试填充" 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;
}
答案 0 :(得分:0)
您必须浏览elements
内的xml
才能获取代码。
例如:
foreach(var word in xml.Root.Element("produto").Elements());
有关详细信息,请参阅以下详细信息:
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>