我的项目中有一个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文件位于同一目录
我尝试了什么
string path = Server.MapPath("PressSection.xml");
XDocument doc = XDocument.Load(path);
给出了这个错误
我不知道为什么。当我设置一个断点并将鼠标悬停在我的值上时,它们就会被填满。
我也试过
XDocument doc = XDocument.Load(Server.MapPath("~/PressSection.xml"));
这给了我与上面相同的错误。
最后,我也试过了
XDocument doc = XDocument.Load("\\PressSection.xml");
这给了我这个错误
此时我不知道该怎么做。
答案 0 :(得分:0)
Element
返回当前容器的第一个子元素(元素/文档) 。所以你的每个查询都是这样的:
doc.Element("name").Value = newEventName;
将返回null,并且您对Value
的后续访问将导致空引用异常。您应首先获得event
元素:
var event = doc.Element("event");
event.Element("name").Value = newEventName;