2011-11-23 1 views
0

나는 데이터를 얻기 위해 웹 서비스를 소비하고 그리고 난 성공은 완전히 내가 아래의 두 가지 기능과 같은 XML 응답을 구문 분석하고 데이터검색된 데이터에 따라 여러 목록을 만드는 방법은 무엇입니까?

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); 
} 

을 다시 얻고 메시지 데이터를 저장하고 내가 데이터를 뻥하고 메시지 데이터를 생성 목록에. 두 개의 데이터 세트 (두 개의 메시지) 내가 모두 동일한 목록에 표시되어 얻고 경우가있는 경우

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; 
} 

는하지만, 진짜 문제입니다. 여러 개의 데이터가있는 경우 여러 목록을 조작하거나 반복하는 방법은 무엇입니까?

답변

0

두 목록을 병합해야하며 두 목록에있는 항목이있을 수 있지만 병합 된 목록에만 표시하려면 가장 쉬운 방법은 추가하기 전에 이미 목록에 있는지 확인하는 것입니다.

관련 문제