我是WP7的新手。 我按照this教程读取并编写了一个xml文件,但是当我读取xml文件时,它只显示xml文件的顶行。我不知道如何检查天气xml文件是否正确写入了program.So。
1.检查保存在独立存储中的xml文件。
2.如何摆脱这个问题。
我在隔离存储中写入Xml文件的代码:
using (IsolatedStorageFile myIsolatedStorage =
IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("mz1.xml", FileMode.Create, myIsolatedStorage))
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(isoStream, settings))
{
writer.WriteStartDocument();
writer.WriteStartElement("person");
writer.WriteElementString("node1", "value1");
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
}
}
}
从隔离存储读取Xml文件的代码:
using (IsolatedStorageFile myIsolatedStorage =
IsolatedStorageFile.GetUserStoreForApplication())
{
IsolatedStorageFileStream isoFileStream =
myIsolatedStorage.OpenFile("mz1.xml", FileMode.Open);
using (StreamReader reader = new StreamReader(isoFileStream))
{
textBlock1.Text= reader.ReadToEnd();
}
}
输出:
<?xml version="1.0" encoding="utf-8"?>
答案 0 :(得分:6)
在回答您的第一个问题时,您可以从codeplex下载并安装WP7 Isolated Storage Explorer: http://wp7explorer.codeplex.com/
它真的很容易使用。只需在app.xaml.cs中添加几行代码,就可以了。
关于你的第二个问题,你在那里的代码看起来不错。我最近写了一个小WP7应用程序也做了这种事情。以下是一些代码:
public List<Task> GetTasks()
{
var tasks = new List<Task>();
using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
{
if (store.FileExists(XmlFile))
{
//store.DeleteFile(XmlFile);
//XDocument doc = XDocument.Load(store.OpenFile(XmlFile, FileMode.Open));
using (var sr = new StreamReader(new IsolatedStorageFileStream(XmlFile, FileMode.Open, store)))
{
XDocument doc = XDocument.Load(sr);
tasks = (from d in doc.Descendants("task")
select new Task
{
Category = (string) d.Attribute("category"),
Id = (string) d.Attribute("id"),
Name = (string) d.Element("name"),
CreateDate = (DateTime) d.Element("createdate"),
DueDate = (DateTime) d.Element("duedate"),
IsComplete = (bool) d.Element("isComplete")
}).ToList<Task>();
}
}
}
return tasks;
}
由您决定,但您可能需要考虑使用LinqToXml。它让事情变得更清洁恕我直言。
我实际上有一篇博文,其中包含了所有这些内容:
http://www.ritzcovan.com/2012/02/building-a-simple-windows-phone-apppart-2/
您也可以下载所有代码。 我希望你觉得它很有帮助。
答案 1 :(得分:2)
您的代码执行正常。我已将结果更改为不在TextBlock中设置,而是更改为字符串变量,并输出以下内容:
<?xml version="1.0" encoding="utf-8"?>
<person>
<node1>value1</node1>
</person>
我猜TextBlock只显示结果的第一行。
答案 2 :(得分:1)