真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

XML解析中namespace有什么用-創(chuàng)新互聯(lián)

這篇文章主要介紹了XML解析中namespace有什么用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),南木林企業(yè)網(wǎng)站建設(shè),南木林品牌網(wǎng)站建設(shè),網(wǎng)站定制,南木林網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,南木林網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

namespace的意義無(wú)需多說(shuō),和C++,C#等高級(jí)語(yǔ)言一樣,XML同樣面臨大量文件放在一起的時(shí)候變量重名的問(wèn)題,所以要用namespace把名字相同意義不同的變量隔離開(kāi)。本文著重討論namespace的解析方法。

以下是一個(gè)簡(jiǎn)單的XML文件:


    
      hello world 
   
   
     one
   

這個(gè)例子里面沒(méi)有namespace,大家初學(xué)XML時(shí)接觸的例子恐怕都是這樣的。這種例子具有誤導(dǎo)性,初學(xué)者解析出了hello world之后就興高采烈的拿同樣的程序去解析實(shí)際的XML文件,往往鎩羽而歸。下面是一段豆瓣API返回的XML文件


  
http://api.douban.com/event/10069638  
Debugging the Web   
  
    
    
    

    name>胖胖的大頭魚(yú)    
    http://api.douban.com/people/1057620
    
no

看到這么多www就不想看直接跳過(guò),然后看到熟悉的 , 果斷套用上面例子的程序,一運(yùn)行卻啥都得不到,問(wèn)題到底出在哪?C#提供一大堆的XML類,XDocument, XReader, XPath, XmlDocument,是不是我現(xiàn)在用的這種類不給力啊,沒(méi)法確定只好亂試,一亂試一晚上就過(guò)去了。童鞋,我們還是靜下心來(lái)逐行看看吧。

這行沒(méi)看頭,看下面這里no這句話,可以理解了,db是一個(gè)namespace的簡(jiǎn)稱,方便寫(xiě)在元素的名字前面,這樣, 就不一樣了。這種簡(jiǎn)稱可以在一個(gè)文檔里面區(qū)別變量,但是對(duì)大量的文檔還是不行,所以namespace還有一個(gè)全稱,就是這里的http://www.douban.com/xmlns/。這個(gè)全稱其實(shí)寫(xiě)什么內(nèi)容都行,對(duì)XML Parser來(lái)說(shuō)都是當(dāng)做字符串來(lái)處理的,但一來(lái)想名字比較麻煩,二來(lái)可以順道做個(gè)廣告,所以大家一般都用的網(wǎng)址。Parse的時(shí)候Parser根據(jù)全稱來(lái)區(qū)別變量,所以就算兩個(gè)文檔中都有,只要全稱不一樣,都沒(méi)有問(wèn)題。

這么說(shuō)就比較清楚了,但那個(gè)http://www.w3.org/2005/Atom到底是個(gè)啥啊,連個(gè)簡(jiǎn)稱都沒(méi)有。哎,意識(shí)到這個(gè)就對(duì)了,他的簡(jiǎn)稱就是””,空串。這東西被稱為default namespace,那些看上去沒(méi)有前綴的都是在這個(gè)namespace下的。所以那個(gè)不是裸的啊,人家其實(shí)是 <”http://www.w3.org/2005/Atom” : author> 所以裸的程序當(dāng)然是解析不了的了。

那么該如何解析呢?這里提供一個(gè)樣例程序,希望對(duì)大家有幫助。這個(gè)代碼可以在WP7上運(yùn)行。我還有一個(gè)版本用的XmlDocument,尼瑪WP7上木有這個(gè)類,坑爹的。。。

  string file = @"C:\Users\v-menlin\Documents\Visual Studio 2010\Projects\test\test\test.xml";
            XDocument doc = XDocument.Load( file );
            //use following code to parse a string 
            //XDocument doc = XDocument.Parse( string );

            //對(duì)于XML文件中所有的沒(méi)加類似db:這種的元素,用下列方法
            XNamespace d = @"http://www.w3.org/2005/Atom";
            foreach ( XElement element in doc.Descendants( d + "title" ) )
            {
                Console.WriteLine( element.Value );
            }
            //下面包含了,一下的例子還示例了如何讀取屬性。
            foreach ( XElement element in doc.Descendants( d + "author" ) )
            {
                foreach ( XElement inelement in element.Descendants( d + "link" ) )
                {
                    Console.WriteLine( inelement.Attribute( "href" ).Value );
                    Console.WriteLine( inelement.Attribute( "rel" ).Value );
                }
            }

            Console.WriteLine();
            //對(duì)于加了冒號(hào)前綴的元素,使用下列代碼
            XNamespace db = @"http://www.douban.com/xmlns/";
            foreach ( XElement element in doc.Descendants( db + "attribute" ) )
            {
                Console.WriteLine( element.Attribute( "name" ).Value );
                Console.WriteLine( element.Value );
            }
            //其實(shí)只是NameSpace的頭部換了一下。

            //下面列出其他幾個(gè)常用頭部,直接換用。
            XNamespace gd = @"http://schemas.google.com/g/2005";
            XNamespace opensearch = @"http://a9.com/-/spec/opensearchrss/1.0/";

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“XML解析中namespace有什么用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


文章標(biāo)題:XML解析中namespace有什么用-創(chuàng)新互聯(lián)
鏈接URL:http://weahome.cn/article/cegcso.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部