程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 讀取XML文件內的某個節點的值

讀取XML文件內的某個節點的值

編輯:C#入門知識

已知有一個本地的xml文件(D:\location.xml)如下:

<?xml version="1.0" encoding="utf-8"?>
<GeocoderSearchResponse>
  <status>0</status>
  <result>
    <location>
      <lat>34.777046099314</lat>
      <lng>113.67314082709</lng>
    </location>
    <precise>1</precise>
    <confidence>80</confidence>
    <level>商務大廈</level>
  </result>
</GeocoderSearchResponse>

這是一個顯示地理位置的坐標信息,此xml文檔要求獲取<location>節點下的值,lat以及lng,就是經緯度。

好長時間沒有練習過xml,對xml也生疏了好多。上百度找了些xml知識,下面就這個例子講講我是怎麼一步一步實現獲取到的(包含):

首先,實例化xml,獲取xml文件的整體信息,這是必須的。下面這段代碼是我第一次寫的,沒有獲取到,貼出來給大家看看,也沒找原因。

            //實例化xml
            XmlDocument xml = new XmlDocument();
            //讀取xml文件
              xml.Load(@"D:\location.xml");  //你的xml地址
              string lat = "";
            string lng = "";
            foreach (XmlNode node in xml.ChildNodes)
            {
                if (node.Name == "GeocoderSearchResponse")
                {
                    foreach (XmlNode node1 in node.ChildNodes)
                    {
                        if (node1.Name == "result")
                        {
                            foreach(XmlNode node2 in node.ChildNodes)
                            {
                                if (node2.Name == "location")
                                {
                                    foreach (XmlNode node3 in node2.ChildNodes)
                                    {
                                        switch (node3.Name)
                                        {
                                            case "lat":
                                                lat = node2.InnerText;
                                                break;
                                            case "lng":
                                                lng = node2.InnerText;
                                                break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

 這是我最笨的方法,一個一個的,循序漸進式的獲取節點,結果不如願,竟然做了吃力不討好的事情。所以說啊,干活那是得需要效率的,得使巧勁,不能蠻力。這個不建議大家浪費時間去琢磨。

有問題,那就得找出問題,解決問題。下面我又改進了前面的獲取方式,結果還是沒有獲取到,這時我郁了,感覺寫的也沒什麼錯啊,怎麼就獲取不到呢?、給大家瞅瞅

            XmlDocument xmldoc = new XmlDocument();
            xmldoc.Load(@"D:\location.xml");
            XmlNode xnRoot = xmldoc.SelectSingleNode("GeocoderSearchResponse");
            XmlNodeList nodelist = xnRoot.ChildNodes;
            foreach (XmlNode node in nodelist)
            {
                string lat = node.SelectSingleNode("lat").InnerXml;
                if (lat != "")
                {
                    Console.WriteLine(lat);
                }
            }

 工作,不是鑽牛角尖,不行,趕緊換,換思想,換思路,換解決方法,不能沉於一個問題而把自己的思路給凝固住了,所以當你卡殼的時候,這時的你需要放松一下了,要麼去接杯水喝,要麼出去透透氣或者干脆上趟WC,反正怎麼舒服怎麼來,呵呵。。。往往靈感就真這麼來了...

            XmlDocument xmldoc = new XmlDocument();
            xmldoc.Load(@"D:\location.xml");
            XmlNodeList xnRoot = xmldoc.SelectNodes("/GeocoderSearchResponse/result/location");
            //XmlNodeList nodelist = xnRoot.ChildNodes;
            foreach (XmlNode node in xnRoot)
            {
                string lat = node.SelectSingleNode("lat").InnerText.ToString();
                string lng = node.SelectSingleNode("lng").InnerText.ToString();
                if (lat != "" && lng != "")
                {
                    //在此就是你想要的值
                    Console.WriteLine(lat);
                    Console.WriteLine(lng);
                }
            }

            Console.Read();

 這段代碼就是我想要的結果,一切OK!!!

有好多東西都忘了,學習就是不斷的在忘記與拾起間游離。

一家之言,僅供參考!!!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved