日期:2014-05-17  浏览次数:20929 次

C#高手请进----关于C#解析xml文档
小弟现在正在做一个微博的项目,当我接收到一个xml文件时,当显示一条微博的xml中可能会有例如“nickname”等属性名及其属性值。如果接收到的xml文件显示有5条微博,也就是说xml文件中会有5个“nickname”等属性名及其属性值,该如何将这5个“nickname”解析出来,并获得其属性值~~??
------最佳解决方案--------------------
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
            }
------其他解决方案--------------------
nodeTempStr += node.InnerText;//循环取得nickname

------其他解决方案--------------------
LINQ TO OBJEC 很方便的哈。
------其他解决方案--------------------

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

------其他解决方案--------------------
引用:
LINQ TO OBJEC 很方便的哈。

能给个例子吗??
------其他解决方案--------------------
引用:
XmlDocument是表示DOM的类。
1.加载XML文档:使用load()方法加载XML文档;
2.读取节点:使用GetElementById()、getElementsByTagName_r()方法根据ID或标签名读取节点;
3.查找节点:使用SelectSingleNode(string search)方法通过XPath查找节点;
 XmlDocument……

这个不行呀,现在的xml文件中有5个“nickname”,如果按照你的办法的话,获取的是最后一个nickname的属性值,我希望这个5个nickname的属性值都能获得~~
------其他解决方案--------------------
<?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 = "";