c# - GetElementByTagName returns System.Xml.XmlElementList -


i have xml document looks

<?xml version="1.0" encoding="utf-8" ?> <event>   <name>test event</name>   <date>07/09/1997</date>   <description>birthday</description>   <blogurl></blogurl> </event> 

i want grab these fields , display them in asp:labels

this code behind

    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();     } 

but displays in label

system.xml.xmlelementlist 

not sure i'm doing wrong.

as name might suggest and, the documentation tells you, method returns:

an xmlnodelist containing list of matching nodes. if no nodes match name, returned collection empty.

you need iterate list, or take first item if you're sure 1 there:

var names = pressrelease.getelementsbytagname("name"); currenteventname.text = names[0].value; 

that said, linq xml far nicer api, encourage learn more it:

var doc = xdocument.load(server.mappath("~/presssection.xml")); currenteventname.text = (string)doc.descendants("name").single(); 

Comments