2016-08-08 4 views
0

У меня есть документ XML в моем проекте, который выглядит как этотПроблема загрузки XML документ из проекта

<?xml version="1.0" encoding="utf-8" ?> 
<event> 
    <name>Test Event</name> 
    <date>06/19/1967</date> 
    <description>Birthday</description> 
    <blogURL></blogURL> 
</event> 

Я хочу, чтобы создать веб-страницу, которая принимает пользовательский ввод и заменяет эти значения.

Вот моя ASPX страница

<asp:Panel ID="NewEvent" CssClass="eventSection" runat="server" Visible="false"> 
    <asp:Label runat="server" ID="MessageBox" Text="" Visible="false"></asp:Label> 
    <telerik:RadTextBox ID="NewEventName" placeholder="Event Name" runat="server"></telerik:RadTextBox> 
    <br /> 
    <telerik:RadDatePicker ID="NewDate" runat="server"></telerik:RadDatePicker> 
    <br /> 
    <telerik:RadTextBox ID="NewDescription" runat="server" placeholder="Description of event" TextMode="MultiLine"></telerik:RadTextBox> 
    <br /> 
    <telerik:RadTextBox ID="NewURL" runat="server" placeholder="Leave blank if none"></telerik:RadTextBox> 
    <br /> 
    <telerik:RadButton ID="EditXML" runat="server" Text="Submit Event" OnClick="EditXML_Click"></telerik:RadButton> 
</asp:Panel> 

Мой код позади, чтобы захватить эти значения

string newEventName = NewEventName.Text; 
    string newEventDescription = NewDescription.Text; 
    string newEventDate = NewDate.SelectedDate.Value.Date.ToString(); 
    string newEventURL = NewURL.Text; 

И, наконец, на самом деле вставить значения в XML-документ

XDocument doc = XDocument.Load("/PressSection.xml"); 
    doc.Element("name").Value = newEventName; 
    doc.Element("date").Value = newEventDate; 
    doc.Element("description").Value = newEventDescription; 
    doc.Element("blogURL").Value = newEventURL; 
    doc.Save(Server.MapPath("~/PressSection.xml")); 

Файл XML является расположенный в том же каталоге, что и мой файл aspx

Image

То, что я пытался

string path = Server.MapPath("PressSection.xml"); 
    XDocument doc = XDocument.Load(path); 

, который дает эту ошибку

error

Что я не знаю, почему. Когда я устанавливаю точку останова и наводил курсор на мои значения, они заполняются.

Я также попытался

XDocument doc = XDocument.Load(Server.MapPath("~/PressSection.xml")); 

Который дает мне ту же ошибку, что и выше.

Наконец, я также пытался

XDocument doc = XDocument.Load("\\PressSection.xml"); 

Что дает мне эту ошибку

final image

Я не знаю, что делать в этой точке.

+1

ЯРД, вероятно, обычно дубликат http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix- это ... Вы можете начать с решения этой ошибки. –

+0

Если вы не перебрасываете исключение, которое происходило в другом месте, 'exception', который вы получаете, очень ясен,' NewEventName' должен быть 'null', когда вы пытаетесь вызвать' .Text' на нем. – starlight54

ответ

0

Element возвращает первый дочерний элемент текущего контейнера (элемент/документ) только. Таким образом, каждый из ваших запросов, как этот:

doc.Element("name").Value = newEventName; 

Вернется нулем, и ваш последующий доступ Value приведет к нулевому эталонным исключению. Вы должны получить event элемент первого:

var event = doc.Element("event"); 
event.Element("name").Value = newEventName; 
+0

Большое спасибо за вашу помощь. Теперь я понимаю. – onTheInternet

 Смежные вопросы

  • Нет связанных вопросов^_^