无法从项目加载XML文档

时间:2016-08-08 19:49:20

标签: c# asp.net 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 个答案:

答案 0 :(得分:0)

Element返回当前容器的第一个子元素(元素/文档) 。所以你的每个查询都是这样的:

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

将返回null,并且您对Value的后续访问将导致空引用异常。您应首先获得event元素:

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