【问题标题】:Windows Phone xna game, how to save XML retrieved from web serviceWindows Phone xna 游戏,如何保存从 Web 服务检索到的 XML
【发布时间】:2012-05-03 17:13:13
【问题描述】:

所有, 我正在开发一款 Windows 手机游戏,该游戏在游戏加载之前从远程 Web 服务中获取一些 XML 数据。这会不时更新游戏使用的一些数据。那部分工作得很好。一旦它从网络服务中获取数据,我正在使用:

    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 标记,所以当我去读取文件时,读取的不是“

提前致谢。

【问题讨论】:

  • 如果你同时使用XmlSerializerSerialize();Deserialize(); 你应该没问题。就您的代码而言,您不会将保存它的部分发布到 IsolatedStorage。

标签: xml web-services windows-phone-7 xna isolatedstorage


【解决方案1】:

我最终通过循环访问 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 });

                    }
                }
       }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多