xml节点返回为null

时间:2016-05-25 13:05:38

标签: c# asp.net xml

我有一个xml文档,我正在我的asp .net应用程序中加载。它的结构如下

-<Event>

    <Event_Name>Special Name</Event_Name>
    <Event_Date>5/27/2016 12:00:00 AM</Event_Date>
    <Event_Description>Event Description</Event_Description>

</Event>

我正在我的代码中加载它,就像这样

    XmlDocument doc = new XmlDocument();
    string path = Server.MapPath("~/NewsXMLNews.xml");
    doc.Load(path);

这正确加载。问题是,我想在我的aspx页面上将Event_Name设置为标签的文本。我使用以下代码

执行此操作
   string nameOfEvent = doc.SelectSingleNode("Event_Name").ToString();
   eventName.Text = nameOfEvent;

问题是nameOfEvent返回null,所以我得到nullReferenceException

我并不完全是我在这里做错了什么。

2 个答案:

答案 0 :(得分:1)

由于您已经检查了路径是否正确并且文档已正确加载,我认为您只需要更改以下行:

    string nameOfEvent = doc.SelectSingleNode("/Event/Event_Name").InnerText;

编辑:我检查xml加载过程的以下步骤:

  1. 我在描述的xml文件中删除了减号并保存 以下行为c:\ temp \ Event.xml:

    <?xml version="1.0" encoding="UTF-8"?> 
    <Event> 
       <Event_Name>Special Name</Event_Name> 
       <Event_Date>5/27/2016 12:00:00 AM</Event_Date> 
       <Event_Description>Event Description</Event_Description> 
    </Event>
    
  2. 然后我成功地跑了:

       public Form1()
       {
           InitializeComponent();            
           XmlDocument doc = new XmlDocument(); 
           string path = "c:\\temp\\Event.xml"; 
           doc.Load(path); 
           string nameOfEvent = doc.SelectSingleNode("/Event/Event_Name").InnerText; 
           eventName.Text = nameOfEvent;
       }
    
  3. 在我的窗口中,我看到名为eventName文字的标签是特殊名称 正如所料。

答案 1 :(得分:0)

这应该有效:

XmlNode nameOfEvent = doc.SelectSingleNode("/Event/Event_Name");
string text = nameOfEvent.InnerText;
eventName.Text = text;