Отказ в доступе при чтении 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");