[英]using xmlreader to read xml in xmldocument
我正在开发win8 Metro应用程序,我需要加载xml文件才能在应用程序上显示。 但是加载位于文件夹中的xml文件后出现问题。
我知道我可以使用xmlreader来读取应用程序本身中的xml文件,但是我不知道如何从应用程序中加载“我的文档”或任何其他文件夹中的文件。 所以我用谷歌搜索它,我发现我可以使用await XmlDocument.LoadFromFileAsync(file)加载,但是我不知道如何使xmlreader读取我在xmldocument中加载的文件。
还是有一种方法xmlreader可以从应用程序中加载xml文件?
我尝试放置xmlreader的文件路径,但是它总是响应“找不到文件”,并且路由是从我的开发目录开始的,而不是从我设置的路径开始的。
谁能帮我 ?
以下是我如何处理xmlreader的方法,因此希望以此方式处理xmldocument中的文件:
XmlReader reader = XmlReader.Create(@"Data/question/" + file_name);
while (reader.Read())
{
// subject.Text += "start-node:\n";
switch (reader.NodeType)
{
case XmlNodeType.Element:
Element = reader.Name;
// subject.Text += String.Format("Element: {0}\n", reader.Name);
if (reader.HasAttributes)
{
// subject.Text += String.Format("Attributes of " + reader.Name + "\n");
while (reader.MoveToNextAttribute())
{
switch (Element)
{
case "SUBJECT":
switch (reader.Name)
{
case "TYPE":
type = int.Parse(reader.Value);
if (start_type == 999)
{
start_type = type;
Save_para("Start_Type", start_type);
}
last_sn += sn;
sn = 0;
break;
case "QUANTITY":
quantity = int.Parse(reader.Value);
question[type] = new string[quantity + 1][];
....
我从这里找到了解决方案,我使用StringReader读取xmldocument并由xmlreader加载。
StorageFolder folder = await KnownFolders.DocumentsLibrary.CreateFolderAsync("documents", CreationCollisionOption.OpenIfExists);
StorageFile file = await folder.GetFileAsync(file_name);
XmlDocument reade = await XmlDocument.LoadFromFileAsync(file);
//XmlReader reader = XmlReader.Create(@"Data/question/" + file_name);
XmlReader reader = XmlReader.Create(new StringReader(reade.GetXml()));
从问题的描述中,我认为您需要执行以下操作才能从设备中选择文件
//function to read an XML file form the local device
private async void SelectXMLButton_Click(object sender, RoutedEventArgs e)
{
var filePicker = new Windows.Storage.Pickers.FileOpenPicker();
//addign a a filter so only XML files will show up.
filePicker.FileTypeFilter.Add(".xml");
var selectedXMlFile = await filePicker.PickSingleFileAsync();
// now your reader should open the file
XmlReader reader = XmlReader.Create(selectedXMlFile.Path);
}
请注意,我尚未测试该功能,但应该可以使用。
更新://说...从我的文档中访问文件,您可以执行以下操作:
XmlReader reader = XmlReader.Create(@"%UserProfile%\My Documents\file.xml");
而且,您还必须允许从Appmanifest文件中的“功能”选项卡访问“文档”文件夹。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.