繁体   English   中英

使用xmlreader读取xmldocument中的xml

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM