Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何根据检索到的数据创建多个列表?_List_Windows Phone 7_Listview_Xml Parsing - Fatal编程技术网

List 如何根据检索到的数据创建多个列表?

List 如何根据检索到的数据创建多个列表?,list,windows-phone-7,listview,xml-parsing,List,Windows Phone 7,Listview,Xml Parsing,我正在使用Web服务获取数据,并且我正在成功地完全获取数据 protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { String username = txtblock4.Text.Trim(); String hash = txtblock8.Text.Trim(); client.UploadStringAsync(new Uri("http://www.pict

我正在使用Web服务获取数据,并且我正在成功地完全获取数据

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{ String username = txtblock4.Text.Trim();
String hash = txtblock8.Text.Trim();
client.UploadStringAsync(new    
Uri("http://www.picturelove.mobi/picturelove3/getmessages.php?loginType=N&email=" +   
username + "&hash=" + hash), "Post");
client.UploadStringCompleted += new   
UploadStringCompletedEventHandler(client_UploadStringCompleted);
}
我使用两个函数来解析xml响应,如下所示:保存消息数据和生成消息数据。我在列表中获取数据

void client_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
{

if (e.Error != null)
txtblock10.Text = e.Error.Message.Trim();
else
txtblock10.Text = e.Result.Trim();
String XmlString = txtblock10.Text.Trim();
using (XmlReader reader = XmlReader.Create(new StringReader(XmlString)))
{

while (reader.ReadToFollowing("all_messages"))
{
while (reader.Read())
{
try
{
reader.ReadToFollowing("id");
string id = reader.ReadElementContentAsString();

reader.MoveToAttribute("from");
string n_from = reader.ReadElementContentAsString();

reader.MoveToAttribute("to");
string n_to = reader.ReadElementContentAsString();

reader.MoveToAttribute("time");
string n_time = reader.ReadElementContentAsString();

reader.MoveToAttribute("sub");
string n_sub = reader.ReadElementContentAsString();

reader.MoveToAttribute("ct");
string n_ct = reader.ReadElementContentAsString();

reader.MoveToAttribute("txt");
string n_txt = reader.ReadElementContentAsString();

reader.MoveToAttribute("msg_image");
string n_image = reader.ReadElementContentAsString();

reader.MoveToAttribute("gender");
string n_gender = reader.ReadElementContentAsString();

reader.MoveToAttribute("name");
string n_name = reader.ReadElementContentAsString();

reader.MoveToAttribute("avatar");
string n_avatar = reader.ReadElementContentAsString();
ObservableCollection<SampleData> dataSource = new ObservableCollection<SampleData>();
dataSource.Add(new SampleData() { Name = txtblock11.Text, Text = txtblock12.Text, 
Time= txtblock13.Text, Picture = txtblock9.Text });
// listBox.Items.Add(new SampleData() { Name = txtblock11.Text, Text = txtblock8.Text,                 
Time = txtblock5.Text, Picture = txtblock12.Text });
SaveMessageData(new SampleData() { Name = txtblock11.Text, Text = txtblock12.Text, Time     
= txtblock13.Text, Picture = txtblock9.Text });
// listBox1.ItemsSource =
this.GenerateMessageData();
}
catch
{
//MessageBox.Show("No New Messages For You", "No Message", MessageBoxButton.OK);
break;
}
}
}
}
}
}
public class SampleData
{
public string Name { get; set; }
public string Text { get; set; }
public string Time { get; set; }
public string Picture { get; set; }
}
public void SaveMessageData()
{
using (var isoStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (var isoStream = new IsolatedStorageFileStream("MyTextfile.txt", FileMode.Append,             
isoStorage))
    {
XmlSerializer serializer = new XmlSerializer(typeof(List<SampleData>));
using (XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings))
{
List<SampleData> data = new List<SampleData>();
foreach (SampleData obj in Listbox.Items)
{
data.Add(obj);


}

data.Add(msg);
if (data != null)
serializer.Serialize(xmlWriter, data);

}
}
}

}
}

public void GenerateMessageData()
{

List<SampleData> data;// = new List<SampleData>();
try
{
using (IsolatedStorageFile myIsolatedStorage =     
IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("MyTextfile.txt",     
 FileMode.Open))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<SampleData>));
data = (List<SampleData>)serializer.Deserialize(stream);
this.Listbox.ItemsSource = data;
return data;
}
}
}
catch (Exception exp)
{
MessageBox.Show("No New Messages For You", "No Message", MessageBoxButton.OK);
}
return null;
}
void客户端\u UploadStringCompleted已完成(对象发送方,UploadStringCompletedEventArgs e)
{
如果(例如错误!=null)
txtblock10.Text=e.Error.Message.Trim();
其他的
txtblock10.Text=e.Result.Trim();
String XmlString=txtblock10.Text.Trim();
使用(XmlReader=XmlReader.Create(新StringReader(XmlString)))
{
while(reader.ReadToFollowing(“所有_消息”))
{
while(reader.Read())
{
尝试
{
reader.ReadToFollowing(“id”);
string id=reader.ReadElementContentAsString();
读者。移动到属性(“从”);
字符串n_from=reader.ReadElementContentAsString();
读者。移动到属性(“到”);
字符串n_to=reader.ReadElementContentAsString();
读者。移动到属性(“时间”);
字符串n_time=reader.ReadElementContentAsString();
读者。移动到属性(“子”);
字符串n_sub=reader.ReadElementContentAsString();
读者。移动到属性(“ct”);
字符串n_ct=reader.ReadElementContentAsString();
reader.MoveToAttribute(“txt”);
字符串n_txt=reader.ReadElementContentAsString();
reader.MoveToAttribute(“msg_图像”);
字符串n_image=reader.ReadElementContentAsString();
读者。移动到属性(“性别”);
字符串n_gender=reader.ReadElementContentAsString();
读者。移动到属性(“名称”);
字符串n_name=reader.ReadElementContentAsString();
读者。移动到属性(“阿凡达”);
字符串n_avatar=reader.ReadElementContentAsString();
ObservableCollection数据源=新的ObservableCollection();
Add(new SampleData(){Name=txtblock11.Text,Text=txtblock12.Text,
Time=txtblock13.Text,Picture=txtblock9.Text});
//添加(新的SampleData(){Name=txtblock11.Text,Text=txtblock8.Text,
Time=txtblock5.Text,Picture=txtblock12.Text});
SaveMessageData(新SampleData(){Name=txtblock11.Text,Text=txtblock12.Text,Time
=txtblock13.Text,Picture=txtblock9.Text});
//listBox1.ItemsSource=
这是.GenerateMessageData();
}
抓住
{
//MessageBox.Show(“没有新消息”,“没有消息”,MessageBoxButton.OK);
打破
}
}
}
}
}
}
公共类抽样数据
{
公共字符串名称{get;set;}
公共字符串文本{get;set;}
公共字符串时间{get;set;}
公共字符串图片{get;set;}
}
public void SaveMessageData()
{
使用(var isoStorage=IsolatedStorageFile.GetUserStoreForApplication())
{
使用(var isoStream=new IsolatedStorageFileStream(“MyTextfile.txt”、FileMode.Append、,
同位存储)
{
XmlSerializer serializer=新的XmlSerializer(typeof(List));
使用(XmlWriter=XmlWriter.Create(流,xmlWriterSettings))
{
列表数据=新列表();
foreach(Listbox.Items中的SampleData对象)
{
添加数据(obj);
}
添加数据(msg);
如果(数据!=null)
serializer.Serialize(xmlWriter,数据);
}
}
}
}
}
public void GenerateMessageData()
{
列表数据;//=新列表();
尝试
{
使用(IsolatedStorage File myIsolatedStorage=
IsolatedStorageFile.GetUserStoreForApplication())
{
使用(IsolatedStorageFileStream=myIsolatedStorage.OpenFile(“MyTextfile.txt”),
FileMode.Open)
{
XmlSerializer serializer=新的XmlSerializer(typeof(List));
数据=(列表)序列化程序。反序列化(流);
this.Listbox.ItemsSource=数据;
返回数据;
}
}
}
捕获(异常扩展)
{
MessageBox.Show(“没有新消息”,“没有消息”,MessageBoxButton.OK);
}
返回null;
}

但是,真正的问题是如果有两组数据(两条消息),如果我得到的数据都显示在同一个列表中。如果有多个数据,如何操作或迭代多个列表?

如果需要合并两个列表,并且两个列表中可能都有项目,但您只想在合并的列表中出现一次,最简单的解决方案是在添加前检查列表中是否已经有项目