讀取XML檔案內的某個節點的值

來源:互聯網
上載者:User

已知有一個本地的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!!!

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.