<URL> 
<filehandle>
<Linkurl>http://2010.sina.com.cn/m/fra/2010-06-22/033539186.shtml</Linkurl> 
<LinkThreshold>30</LinkThreshold> 
</filehandle>
<filehandle>
<Linkurl>http://2010.sina.com.cn/m/fra/2009-06-22/033539186.shtml</Linkurl> 
<LinkThreshold>15</LinkThreshold> 
</filehandle>
</URL> 

解决方案 »

  1.   

    由于filehandle是由用户设置,故数量不定,但filehandle里均含有linkurl和linkThreshold~~麻烦兄弟们帮忙看看怎么遍历读取啊?
      

  2.   

    遍历xml三种方法,现在最流行的当然是linq to xml 了
      

  3.   

    根据这个XML生成一个XSD,然后再根据XSD生成一个类,然后就可以直接把这个XML序列化成那个类,用类读就很方便了
      

  4.   


    linq刚入门。如果能看到范例就好了
      

  5.   

    能举个类似的小例子吗??XML生成一个XSD之类的~~可以吗?
      

  6.   


            string xml = @"<Url>
            <filehandle>
    <Linkurl>http://2010.sina.com.cn/m/fra/2010-06-22/033539186.shtml</Linkurl>  
    <LinkThreshold>30</LinkThreshold>  
    </filehandle>
    <filehandle>
    <Linkurl>http://2010.sina.com.cn/m/fra/2009-06-22/033539186.shtml</Linkurl>  
    <LinkThreshold>15</LinkThreshold>  
    </filehandle></Url>";
            XmlDocument xd = new XmlDocument();
            //xd.Load(@"D:\aaa.xml");
            xd.LoadXml(xml);        XmlNodeList xnl = xd.GetElementsByTagName("filehandle");
            for (int i = 0; i < xnl.Count; i++)
            {
                XmlNode xnLurl = xnl[i].SelectSingleNode("Linkurl");
                if (xnLurl != null)
                {
                    Response.Write(xnLurl.InnerText);
                }
                XmlNode xnLt = xnl[i].SelectSingleNode("LinkThreshold");
                if (xnLt != null)
                {
                    Response.Write(xnLt.InnerText);
                }
            }
      

  7.   

    string xml = @"<URL>  
    <filehandle>
    <Linkurl>http://2010.sina.com.cn/m/fra/2010-06-22/033539186.shtml</Linkurl>  
    <LinkThreshold>30</LinkThreshold>  
    </filehandle>
    <filehandle>
    <Linkurl>http://2010.sina.com.cn/m/fra/2009-06-22/033539186.shtml</Linkurl>  
    <LinkThreshold>15</LinkThreshold>  
    </filehandle>
    </URL>";            LINQ TO XML
                XDocument doc = XDocument.Parse(xml);
                foreach (var v in doc.Element("URL").Elements("filehandle"))
                {
                    Console.WriteLine("Linkurl={0}       LinkThreshold={1}", v.Element("Linkurl").Value, v.Element("LinkThreshold").Value);
                }
      

  8.   

    两个结果一样
                string xml = @"<URL>  
    <filehandle>
    <Linkurl>http://2010.sina.com.cn/m/fra/2010-06-22/033539186.shtml</Linkurl>  
    <LinkThreshold>30</LinkThreshold>  
    </filehandle>
    <filehandle>
    <Linkurl>http://2010.sina.com.cn/m/fra/2009-06-22/033539186.shtml</Linkurl>  
    <LinkThreshold>15</LinkThreshold>  
    </filehandle>
    </URL>";            //LINQ TO XML
                XDocument doc = XDocument.Parse(xml);
                foreach (var v in doc.Element("URL").Elements("filehandle"))
                {
                    Console.WriteLine("Linkurl={0}       LinkThreshold={1}", v.Element("Linkurl").Value, v.Element("LinkThreshold").Value);
                }            System.Xml.XmlDocument xdoc = new System.Xml.XmlDocument();
                xdoc.LoadXml(xml);
                foreach (System.Xml.XmlNode n in xdoc.SelectSingleNode("URL").SelectNodes("filehandle"))
                {
                    Console.WriteLine("Linkurl={0}       LinkThreshold={1}", n.SelectSingleNode("Linkurl").InnerText, n.SelectSingleNode("LinkThreshold").InnerText);
                }
      

  9.   

                //LINQ TO XML
                XDocument doc = XDocument.Parse(xml);            //var Query = from D in doc.Element("URL").Elements("filehandle")
                //            select new { Linkurl = D.Element("Linkurl").Value, LinkThreshold = D.Element("LinkThreshold").Value };            //或者
                var Query = doc.Element("URL").Elements("filehandle").Select(x => new { Linkurl = x.Element("Linkurl").Value, LinkThreshold = x.Element("LinkThreshold").Value });            foreach (var v in Query)
                { 
                   Console.WriteLine("Linkurl={0}       LinkThreshold={1}",v.Linkurl,v.LinkThreshold);
                }
      

  10.   


    //遍历节点,获取你想要获取节点的值,尽量学会自己思考问题。。参考:
    /// <summary>
            /// 生产一个XML文件
            /// </summary>
            /// <param name="xmlFilePath">XML文件名</param>
            /// <param name="StartElement">根元素名</param>
            private void CreateXMLFile(string xmlFilePath, string StartElement)
            {
                XmlTextWriter writer = new XmlTextWriter(xmlFilePath, Encoding.UTF8);
                writer.WriteStartDocument();
                writer.WriteStartElement(StartElement);
                writer.WriteEndElement();
                writer.WriteEndDocument();
                writer.Close();
            }        /// <summary>
            /// 向XML文件中增加一个新的元素,属性,值
            /// </summary>
            /// <param name="xmlpath">XML文件名</param>
            /// <param name="element">元素名</param>
            /// <param name="attribut">属性名</param>
            /// <param name="value">值</param>
            /// <returns></returns>
            public bool addXmlElement(string xmlpath, string element, string attribute, string value)
            {
                try
                {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(xmlpath);
                    XmlNode node = doc.SelectSingleNode("//" + element);
                    if (node == null)
                    {
                        XmlElement xElement = doc.CreateElement(element);
                        xElement.SetAttribute(attribute, value);
                        doc.DocumentElement.AppendChild(xElement);
                    }
                    else
                    {
                        try
                        {
                            if (node.Attributes[attribute] == null)
                            {
                                XmlAttribute newAttr = doc.CreateAttribute(attribute);
                                newAttr.Value = value;
                                node.Attributes.Append(newAttr);
                            }
                            else
                            {
                                string attributesvalue = node.Attributes[attribute].Value;
                                if (attributesvalue != null || attributesvalue != "")
                                {
                                    node.Attributes[attribute].Value = value;
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            XmlAttribute newAttr = doc.CreateAttribute(attribute);
                            newAttr.Value = value;
                            node.Attributes.Append(newAttr);
                        }
                    }
                    doc.Save(xmlpath);
                    return true;
                }
                catch (Exception e)
                {
                    return false;
                }
            }        /// <summary>
            /// 更新XML文件中某个元素的属性值
            /// </summary>
            /// <param name="xmlpath">XML文件名</param>
            /// <param name="element">元素名</param>
            /// <param name="attribut">属性名</param>
            /// <param name="value">值</param>
            /// <returns></returns>
            public bool updateValue(string xmlpath, string element, string attribute, string value)
            {
                try
                {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(xmlpath);
                    XmlNode node = doc.SelectSingleNode("//" + element);
                    node.Attributes[attribute].Value = value;
                    doc.Save(xmlpath);
                    return true;
                }
                catch (Exception ex)
                {
                    if (addXmlElement(xmlpath, element, attribute, value))
                        return true;
                    else
                        return false;
                }
            }        /// <summary>
            /// 从XML文件中读取某个元素的属性值
            /// </summary>
            /// <param name="xmlpath">XML文件名</param>
            /// <param name="element">元素名</param>
            /// <param name="attribut">属性名</param>
            /// <param name="value">值</param>
            /// <returns></returns>
            public string readValue(string xmlpath, string element, string attribute, string value)
            {
                try
                {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(xmlpath);
                    XmlNode node = doc.SelectSingleNode("//" + element);
                    if (node.Attributes[attribute].Value.ToString() != "")
                    {
                        value = node.Attributes[attribute].Value;
                    }
                    else
                    {
                        addXmlElement(xmlpath, element, attribute, value);
                    }
                    return value;
                }
                catch (Exception ex)
                {
                    if (addXmlElement(xmlpath, element, attribute, value))
                        return value;
                    else
                        return "";
                }
            }
      

  11.   

    用VS自带的工具就可以生成啊,当你打开一个XML文件的时候,VS上就会出现XML的菜单,子菜单上有个生成架构