Отказ в доступе при чтении XML-ридером - C#
Формулировка задачи:
Добрый день! Пишу XML-парсер, но выкидывает ошибку Access to the path 'C:\Documents and Settings\All Users\Документы' is denied.
вот в этом месте
Пробовал прописывать путь вручную, типа "C:\" - ошибка та же. В консоли данный код работает успешно, но нужно делать windows.forms.
В чем может быть причина?
Полный листинг:
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); }
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");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д