请问怎样可以遍历xml文件读取每个节点的属性值:
例如如下的xml文件,读取出每个节点的属性first-name的值<?xml version="1.0" encoding="gb2312"?>
<players>
   <player>
 <name first-name="Luis" last-name="Boa Morte"/>
 <player-position english="Midfielder" spanish=""/>
   </player>
   <player>
 <name first-name="Matthew" last-name="Upson"/>
 <player-position english="Defender" spanish=""/>
   </player>
</players>

解决方案 »

  1.   


    XmlDocument doc = new XmlDocument();
    IList NodeValues = new ArrayList();
    doc.Load( Server.MapPath("1.xml") );
    XmlNode root = doc.DocumentElement;
    foreach (XmlNode personElement in root.SelectSingleNode("FAX").ChildNodes)
    {
        NodeValues.Add(personElement.Attributes["first-name"].Value);
    }
    return IList;
      

  2.   

    楼主参考XmlReader reader = XmlReader.Create(Server.MapPath("XF.xml"));            while (reader.Read())
                {
                    Response.Write("<li>节点类型:" + reader.NodeType + "==<br>");
                    switch (reader.NodeType)
                    {
                        case XmlNodeType.XmlDeclaration:
                            for (int i = 0; i < reader.AttributeCount; i++)
                            {
                                reader.MoveToAttribute(i);
                                Response.Write("属性:" + reader.Name + "=" + reader.Value + "&nbsp;");
                            }
                            break;
                        case XmlNodeType.Attribute:
                            for (int i = 0; i < reader.AttributeCount; i++)
                            {
                                reader.MoveToAttribute(i);
                                Response.Write("属性:" + reader.Name + "=" + reader.Value + "&nbsp;");
                            }
                            break;
                        case XmlNodeType.CDATA:
                            Response.Write("CDATA:" + reader.Value + "&nbsp;");
                            break;
                        case XmlNodeType.Element:
                            Response.Write("节点名称:" + reader.LocalName + "<br>");
                            for (int i = 0; i < reader.AttributeCount; i++)
                            {
                                reader.MoveToAttribute(i);
                                Response.Write("属性:" + reader.Name + "=" + reader.Value + "&nbsp;");
                            }
                            break;
                        case XmlNodeType.Comment:
                            Response.Write("Comment:" + reader.Value);
                            break;
                        case XmlNodeType.Whitespace:
                            Response.Write("Whitespace:" + "&nbsp;");
                            break;
                        case XmlNodeType.ProcessingInstruction:
                            Response.Write("ProcessingInstruction:" + reader.Value);
                            break;
                        case XmlNodeType.Text:
                            Response.Write("Text:" + reader.Value);
                            break;
                    }
                }
                reader.Close();
      

  3.   

    如果你的结构不做大的变化的话,不需要遍历,直接使用SelectNodes就可以了。            XmlDocument doc = new XmlDocument();
                doc.Load("..\\..\\XMLFile1.xml");            foreach (XmlNode node in doc.SelectNodes("/players/player/name"))
                {
                    Console.WriteLine(node.Attributes["first-name"].Value.ToString());
                }XMLFile1.xml的内容就是你的xml。
      

  4.   


     XmlReader reader = XmlReader.Create(Server.MapPath("XF.xml"));            while (reader.Read())
                {                switch (reader.NodeType)
                    {                    case XmlNodeType.Element:                        for (int i = 0; i < reader.AttributeCount; i++)
                            {
                                reader.MoveToAttribute(i);
                                if (reader.Name == "first-name")
                                {
                                    Response.Write(reader.Name + "=" + reader.Value + "&nbsp;");
                                }
                            }
                            break;                }
                }
                reader.Close();
      

  5.   


    XmlDocument doc = new XmlDocument();
    IList NodeValues = new ArrayList();
    doc.Load( Server.MapPath("1.xml") );
    XmlNode root = doc.DocumentElement;
    foreach (XmlNode personElement in root.SelectSingleNode("("/players/player").ChildNodes)
    {
        NodeValues.Add(personElement.Attributes["first-name"].Value);
    }
    return IList;
      

  6.   

    用个DataSet先Read进来再来一循环,简单多了
      

  7.   

    看看这个吧           
    fileName = "images/" + fileName;
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(Server.MapPath("~/FocusList.xml"));
                XmlNode root = xmlDoc.SelectSingleNode("Image"); //查找<bookstore> 
                XmlNodeList xnl = xmlDoc.SelectSingleNode("Image").ChildNodes;
                if (xnl != null && xnl.Count > 0)
                {
                    foreach (XmlNode xn in xnl)
                    {
                        
                        for (int i = 0; i < xnl.Count - 4;i++ )
                        {
                            //删除最靠前的一个节点
                            xn.ParentNode.RemoveChild(xn);
                        }
                    }
                }
               
                string str = DateTime.Now.ToString("yyyy:MM:dd hh:mm:ss fff");
                XmlElement xe1 = xmlDoc.CreateElement("Focus");//创建一个<Focus>节点 
                xe1.SetAttribute("ID", "" + modelID + "");//设置该节点ID属性 
                XmlElement xesub1 = xmlDoc.CreateElement("Title");
                xesub1.InnerText = TrueName;//设置文本节点 
                xe1.AppendChild(xesub1);//添加到<Focus>节点中 
                XmlElement xesub2 = xmlDoc.CreateElement("Path");
                xesub2.InnerText = fileName;
                xe1.AppendChild(xesub2);
                root.AppendChild(xe1);//添加到<image>节点中 
                xmlDoc.Save(Server.MapPath("~/FocusList.xml"));
                return true;
      

  8.   


    public ArrayList GetAttribute()
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("XMLFile.xml"));
            ArrayList al = new ArrayList();
            XmlNodeList xmlNL = xmlDoc.SelectNodes("players/player");
            foreach (XmlNode xmlN in xmlNL)
            {
                XmlElement xe = (XmlElement)xmlN.SelectSingleNode("name");
                al.Add(xe.GetAttribute("first-name"));
            }
            return al;
        }这个看下,测试没问题。返回的ArrayList
      

  9.   


            XmlNodeList nodes = xmlDoc.SelectNodes("//@first-name");
            foreach (XmlNode node in nodes)
            {
                  //node.Value;
            }