Отказ в доступе при чтении XML-ридером - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Пишу XML-парсер, но выкидывает ошибку Access to the path 'C:\Documents and Settings\All Users\Документы' is denied. вот в этом месте
idReader = new XmlTextReader(xmlPath);
        idReader.WhitespaceHandling = WhitespaceHandling.None;
        while (idReader.Read())
            if (idReader.NodeType == XmlNodeType.Element)
                if (idReader.Name == "STATIONCONF")
                {
                    Site_ID id = new Site_ID(idReader.GetAttribute("ID"));
                    Sid.Add(id);
                }
Пробовал прописывать путь вручную, типа "C:\" - ошибка та же. В консоли данный код работает успешно, но нужно делать windows.forms. В чем может быть причина? Полный листинг:
namespace XmlPars_FormsApp
{
    public class Site_ID
    {
        string SiteID;
 
        public Site_ID(string SiteID)
        {
            this.SiteID = SiteID;
        }
        public string sitID
        {
            get { return SiteID; }
        }
    }
 
    public partial class Frm_main : Form
    {
        string xmlPath; //путь к файлам xml
 
        public Frm_main()
        {
            InitializeComponent();
            lstBox_sites.Sorted = true;
            DirectoryInfo dirInfo; //каталог
            dirInfo = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments));
            xmlPath = dirInfo.FullName;
            cmb_path.Text = xmlPath;
 
            //список xml-файлов
            XMLList(xmlPath);
 
        }
        public Boolean XMLList(string xmlPath)
    {
        ArrayList Sid = new ArrayList();
        XmlDocument xdoc = new XmlDocument();
        XmlNodeList idList = xdoc.GetElementsByTagName("STATIONCONF");
        XmlTextReader idReader = null;
        idReader = new XmlTextReader(xmlPath);
        idReader.WhitespaceHandling = WhitespaceHandling.None;
        while (idReader.Read())
            if (idReader.NodeType == XmlNodeType.Element)
                if (idReader.Name == "STATIONCONF")
                {
                    Site_ID id = new Site_ID(idReader.GetAttribute("ID"));
                    Sid.Add(id);
                }
 
        DirectoryInfo dirInfo = new DirectoryInfo(xmlPath);
        //инфо о файлах
        FileInfo[] fi = dirInfo.GetFiles("Site.xml", SearchOption.AllDirectories);
        lstBox_sites.Items.Clear();
 
        // добавим файлы в листбокс
        foreach (FileInfo fc in fi)
        {
            foreach (Site_ID ids in Sid)
            {
                lstBox_sites.Items.Add(ids.sitID);
            }
            
        }
        cmb_path.Text = xmlPath;
        if (fi.Length == 0)
            return false;
        else
        {
            lstBox_sites.SelectedIndex = 0;
            return true;
        }
    }
 
        private void btn_browse_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            fbd.Description = "Выберите папку";
            fbd.ShowNewFolderButton = false;
            //диалоговое окно
            if (fbd.ShowDialog() == DialogResult.OK)
            {
                xmlPath = fbd.SelectedPath;
                cmb_path.Text = xmlPath;
                if (!XMLList(fbd.SelectedPath))
                    MessageBox.Show("В этом каталоге нет файлов Sites.xml","Нет файлов");
            }
            XMLList(xmlPath);
 
        }
        
    }
}

Решение задачи: «Отказ в доступе при чтении XML-ридером»

textual
Листинг программы
var files = System.IO.Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments), "*.xml");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5