2010-06-21 145 views
1

我有以下XML結構:解析XML使用Ruby和引入nokogiri

<charsets> 
    <charset> 
    <name>ANSI_X3.4-1968</name> 
    <aliases> 
     <alias>iso-ir-6</alias> 
     <alias>ANSI_X3.4-1986</alias> 
     <alias>ISO_646.irv:1991</alias> 
     <alias>ASCII</alias> 
     <alias>ISO646-US</alias> 
     <alias>US-ASCII</alias> 
     <alias>us</alias> 
     <alias>IBM367</alias> 
     <alias>cp367</alias> 
     <alias>csASCII</alias> 
    </aliases> 
    </charset> 
    <charset> 
    <name>ISO-10646-UTF-1</name> 
    <aliases> 
     <alias>csISO10646UTF1</alias> 
    </aliases> 
    </charset> 
</charsets> 

我可以用搶使用Ruby和引入nokogiri中的name節點的文本內容:

require 'nokogiri' 
require 'open-uri' 

doc = Nokogiri::XML(File.open("StandardCharsets.xml")) 
@charsets = doc.css("charsets name").map {|node| node.children.text } 

但是,什麼我想要的是所有namealias節點的文本內容按照源文檔中顯示的順序排列。我嘗試的一切都失敗了

有沒有人有一個很好的例子來說明如何做到這一點?

+0

爲什麼你有'需要「開uri''? – Adrian 2010-06-21 23:38:20

回答

6

更改線路

@charsets = doc.css("charsets name").map {|node| node.children.text } 

@charsets = doc.css("charsets name, charsets alias").map {|node| node.children.text }