Используйте Server.MapPath для загрузки внешних файлов
Я хочу загрузить файл XML, который находится на диске D:. Это то, что я использовал
doc.Load(System.Web.HttpContext.Current.Server.MapPath("/D:/Employee.xml"));
Но при попытке запустить программу выдает ошибку:
В экземпляре объекта не задана ссылка на объект.
Я где-то читал, что Server.MapPath можно использовать только для веб-страниц или веб-приложений. Я сделал форму в asp.net, используя C#.
Почему я получаю эту ошибку?
Это мой код:
private void btnRead_Click(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load("D:\\Employee.xml");
XmlNode root = doc.DocumentElement;
StringBuilder sb = new StringBuilder();
XmlNodeList nodeList = root.SelectNodes("Employee");
foreach (XmlNode node in nodeList)
{
sb.Append("Name: ");
//Select the text from a single node, “Title” in this case
sb.Append(node.SelectSingleNode("Name").InnerText);
sb.Append("EmpID: ");
sb.Append(node.SelectSingleNode("EmpID").InnerText);
sb.Append("Dept: ");
sb.Append(node.SelectSingleNode("Dept").InnerText);
sb.Append("");
}
System.Web.HttpContext.Current.Response.Write(sb.ToString());
}
Я сделал форму в VS 2008. Сохраненные детали в файле XML. А теперь хочу отобразить вывод.
2 ответа
Решение
Почему бы не загрузить напрямую:
doc.Load("D:\\Employee.xml");
В настольном приложении нет такого HttpContext.Current, поэтому вы получаете исключение NullReferenceException. Вместо этого используйте
doc.Load("D:/Employee.xml");