全部, 我正在开发一款Windows游戏,它可以在游戏加载之前从远程Web服务中获取一些XML数据。这会不时更新游戏使用的一些数据。那部分工作正常。一旦它从Web服务中获取数据,我就会使用:
void Response_Completed(IAsyncResult result)
{
HttpWebRequest request = (HttpWebRequest)result.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);
using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
string xml = streamReader.ReadToEnd();
using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
reader.MoveToContent();
reader.GetAttribute(0);
reader.MoveToContent();
webMessage = reader.ReadInnerXml();
所以现在我在webMessage字符串变量中有一个XML字符串。然后我将其写入IsolatedStorage中的文件。再次效果很好。我的问题是当我去读取数据时:
using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("Test.xml", FileMode.Open))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<Item>));
List<Item> data = (List<Item>)serializer.Deserialize(stream);
foreach (Item item in data)
{
System.Diagnostics.Debug.WriteLine(item.Item);
}
}
}
所以问题是当文件被写入隔离存储器时,它会转移所有的XML标记,所以当我去读取文件时,而不是“&lt;”它正在阅读%lt;等,导致反序列化废弃并报告无效字符。我真的试图避免循环使用我从Web服务中获取的XML,这看起来很浪费,我知道它是来自我自己的服务器的有效XML。有没有人知道如何从Web服务获取XML并将其一次性写入IsolatedStorage中的文件?
提前致谢。
答案 0 :(得分:0)
我最终通过循环遍历Web服务返回的XML元素来填充自定义的可序列化自定义对象。根本没有太多的代码:
HttpWebRequest request = (HttpWebRequest)result.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);
using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
string xml = streamReader.ReadToEnd();
using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
reader.MoveToContent();
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
string objectItem = reader.ReadElementContentAsString();
webData.Add(new CustomObject() { Item = objectItem });
}
}
}