小弟现在正在做一个微博的项目,当我接收到一个xml文件时,当显示一条微博的xml中可能会有例如“nickname”等属性名及其属性值。如果接收到的xml文件显示有5条微博,也就是说xml文件中会有5个“nickname”等属性名及其属性值,该如何将这5个“nickname”解析出来,并获得其属性值~~??

解决方案 »

  1.   

    LINQ TO OBJEC 很方便的哈。
      

  2.   


    XDocument xmlFile = XDocument.Load("books.xml");
    var query = from c in xmlFile.Elements("catalog").Elements("book")
    select c;
    foreach (XElement book in query)
    {
    Console.WriteLine(book.Value.ToString());
    }
      

  3.   

    XmlDocument是表示DOM的类。
    1.加载XML文档:使用load()方法加载XML文档;
    2.读取节点:使用GetElementById()、getElementsByTagName_r()方法根据ID或标签名读取节点;
    3.查找节点:使用SelectSingleNode(string search)方法通过XPath查找节点;
     XmlDocument xdoc = new XmlDocument();
                xdoc.Load(Server.MapPath("test.xml"));//本地路径
             xdoc.Load(@"http://www.google.com/ig/api?weather=shenzhen&hl=zh-cn");//直接写地址也行
                XmlNodeList xnl = xdoc.SelectNodes("line/stop/");
                string nodeTempStr = "";
                foreach (XmlNode node in xnl)
                {
                    nodeTempStr = node.InnerText;//循环取得nickname
                }
      

  4.   

    这个不行呀,现在的xml文件中有5个“nickname”,如果按照你的办法的话,获取的是最后一个nickname的属性值,我希望这个5个nickname的属性值都能获得~~
      

  5.   

    nodeTempStr += node.InnerText;//循环取得nickname
      

  6.   

    <?xml version="1.0" encoding="UTF-8"?>
    <weibo>
    <nickname id="1" text="1111">
      111111111
    </nickname>
      <nickname id="2" text="2222">
        2222222222
      </nickname>
      <nickname id="3" text="3333">
        333333333
      </nickname>
      <nickname id="4" text="4444">
        4444444444
      </nickname>
      <nickname id="5" text="5555">
        55555555555
      </nickname>
    </weibo>XmlDocument xdoc = new XmlDocument();
    xdoc.Load(Server.MapPath("cc.xml"));//本地路径
    string nodeTempStr = ""; XmlNode root = xdoc.DocumentElement;
    foreach (XmlNode xmlNode in root.ChildNodes)
    {
    foreach (XmlNode xmlElement in xmlNode.ChildNodes)
    {
    nodeTempStr += xmlElement.InnerText + "<br/>";
    }

    Response.Write(nodeTempStr);
    输出:
    111111111 
    2222222222 
    333333333 
    4444444444 
    55555555555