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

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

如何利用xmllint命令處理xml

小編給大家分享一下如何利用xmllint命令處理xml,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

專業(yè)領(lǐng)域包括成都網(wǎng)站制作、成都做網(wǎng)站、商城建設(shè)、微信營銷、系統(tǒng)平臺(tái)開發(fā), 與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,創(chuàng)新互聯(lián)建站的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶提供全網(wǎng)互聯(lián)網(wǎng)整合方案。

例子

curl http://www.php.cn /ip/?q=8.8.8.8 2>/dev/null | xmllint --html --xpath "http://ul[@id='csstb']" - 2>/dev/null | sed -e 's/<[^>]*>//g'
上例中主要是通過在123cha上查詢的IP地址的歸屬情況后,通過提取結(jié)果(ul#csstb),只獲取文本部分的內(nèi)容。上面的腳本語句執(zhí)行后的結(jié)果如下:


[您的查詢]:8.8.8.8
本站主數(shù)據(jù):
美國
本站輔數(shù)據(jù):Google Public DNS提供:hypo
美國 Google免費(fèi)的Google Public DNS提供:zwstar參考數(shù)據(jù)一:美國
參考數(shù)據(jù)二:美國
下面再結(jié)合示例看下其他主要參數(shù)的用法。

1、 --format

此參數(shù)用于格式化xml,使其具有良好的可讀性。
假設(shè)有xml(person.xml)內(nèi)容如下:


ball30male  
執(zhí)行如下操作后其輸出為更易讀的xml格式:

#xmllint --format person.xml
    
    
      ball
      30
      male
    

2、 --noblanks

與--format相反,有時(shí)為了節(jié)省傳輸量,我們希望去掉xml中的空白,這時(shí)我們可以使用--noblanks命令。
假設(shè)xml(person.xml)內(nèi)容如下


    
      ball
      30
      male
    

執(zhí)行該參數(shù)操作后,其輸出結(jié)果為:

#xmllint --noblanks person.xml
    
    ball30male

3、--schema

使用scheam驗(yàn)證xml文件的正確性(XML Schema 是基于 XML 的 DTD 替代者)
假設(shè)有xml文件(person.xml)和scheam文件(person.xsd)文件,內(nèi)容分別如下

person.xml


    
      ball
      30
      male
    

person.xsd


    
      
      
      
        
          
            
            
          
        
      
      
        
          
            
            
            
          
        
      
    

按如下命令執(zhí)行后的結(jié)果是:

#xmllint --schema person.xsd person.xml
    
    
      ball
      30
      male
    

person.xml validates  
注:默認(rèn)情況下,驗(yàn)證后會(huì)輸出驗(yàn)證的文件內(nèi)容,可以使用 --noout選項(xiàng)去掉此輸出,這樣我們可以只得到最后的驗(yàn)證結(jié)果。


#xmllint --noout --schema person.xsd person.xml
person.xml validates  
下面我們改動(dòng)person.xml,使這份文件age字段和sex都是不符合xsd定義的。

#xmllint --noout --schema person.xsd person.xml
person.xml:4: element age: Schemas validity error : Element 'age': 'not age' is not a valid value of the atomic type 'xs:integer'.
person.xml:5: element sex: Schemas validity error : Element 'sex': [facet 'enumeration'] The value 'test' is not an element of the set {'male', 'female'}.
person.xml:5: element sex: Schemas validity error : Element 'sex': 'test' is not a valid value of the local atomic type.
person.xml fails to validate

可以看到xmllint成功的報(bào)出了錯(cuò)誤!

4、 關(guān)于--schema的輸出

在講輸出之前先看下面一個(gè)場景,假如你想通過php執(zhí)行xmllint然后拿到返回結(jié)果,你的代碼通常應(yīng)該是這個(gè)樣子valid.php

我們保持上文中person.xml的錯(cuò)誤。
執(zhí)行此代碼,你會(huì)發(fā)現(xiàn),你拿到的output不是錯(cuò)誤,而是array(0) {}, amazing!
為什么會(huì)這樣呢?

因?yàn)閤mllint --schema,如果驗(yàn)證出錯(cuò)誤,錯(cuò)誤信息并不是通過標(biāo)準(zhǔn)輸出(stdout)顯示的,而是通過標(biāo)準(zhǔn)錯(cuò)誤(stderr)進(jìn)行顯示的。
而exec的output參數(shù)拿到的,只能是標(biāo)準(zhǔn)輸出(stdout)顯示的內(nèi)容。
所以,為了拿到出錯(cuò)信息,我們需要將標(biāo)準(zhǔn)錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出,對(duì)應(yīng)修改代碼:


$command = "xmllint --noout --schema person.xsd person.xml 2>$1";  
再次執(zhí)行valid.php,錯(cuò)誤信息順利拿到!

例子

首先建立一份 xml 文檔,命名為 po.xml,其內(nèi)容如下:



    
        Alice Smith
        123 Maple Street
        Mill Valley
        CA
        90952
    
    
        Robert Smith
        8 Oak Avenue
        Old Town
        PA
        95819
    
    Hurry, my lawn is going wild!
    
        
            Lawnmower
            1
            148.95
            Confirm this is electric
        
        
            Baby Monitor
            1
            39.98
            1999-05-21
        
    

然后為 po.xml 寫的 schema 文件,取名為 po.xsd,內(nèi)容如下:


 
  
   Purchase order schema for Example.com.
   Copyright 2000 Example.com. All rights reserved.
  
 
 
 
 
  
   
   
   
   
  
  
 
 
  
   
   
   
   
   
  
  www.111cn.net
 
 
  
   
    
     
      
      
       
        
         
        
       
      
      
      
      
     
     
    
   
  
 
 
 
  
   
  
 

使用 xmllint 對(duì) po.xml 文件進(jìn)行校驗(yàn):

$ xmllint   -schema po.xsd po.xml如果無出錯(cuò)信息,就說明校驗(yàn)通過了。

以上是“如何利用xmllint命令處理xml”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


分享文章:如何利用xmllint命令處理xml
轉(zhuǎn)載來源:http://weahome.cn/article/iiescg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部