我有一个看起来像这样的XML文档
<?xml version="1.0" encoding="utf-8" ?>
<event>
<name>Test Event</name>
<date>07/09/1997</date>
<description>Birthday</description>
<blogURL></blogURL>
</event>
我想抓住这些字段并在ASP:Labels
这是我背后的代码
protected void Page_Load(object sender, EventArgs e)
{
XmlDocument pressRelease = new XmlDocument();
pressRelease.Load(Server.MapPath("~/PressSection.xml"));
XmlNodeList name = pressRelease.GetElementsByTagName("name");
CurrentEventName.Text = name.ToString();
}
但这是它在标签中显示的内容
System.Xml.XmlElementList
不确定我做错了什么。
答案 0 :(得分:1)
正如名称所暗示的那样,当the documentation tells you时,该方法返回:
包含所有匹配节点列表的XmlNodeList。如果没有节点与name匹配,则返回的集合将为空。
你需要迭代那个列表,或者只是在第一个项目中确定一个将永远在那里:
var names = pressRelease.GetElementsByTagName("name");
CurrentEventName.Text = names[0].Value;
也就是说,LINQ to XML是一个更好的API,我绝对鼓励你了解更多:
var doc = XDocument.Load(Server.MapPath("~/PressSection.xml"));
CurrentEventName.Text = (string)doc.Descendants("name").Single();
答案 1 :(得分:0)
试试这种方式
XDocument doc = XDocument.Load(Server.MapPath("~/PressSection.xml"));
var query = doc.Descendants("event").Elements("name").FirstOrDefault();
Console.WriteLine(query.Value);
答案 2 :(得分:0)
这实际上是预期的行为。
原因是它返回符合条件的所有元素的列表。如果你肯定知道你总是想要第一个元素,你总是可以得到第一个元素:
name[0].ToString()
但是,您可能还想为XmlElementList添加一些空和空检查,因为它也可能为空,如果您尝试从中获取项目,将导致您获得空指针异常。