您的位置:首页 > 编程语言 > Ruby

Ruby解析XML文件

2013-03-26 21:37 267 查看
分类: 程序设计2010-06-07
12:40 928人阅读 评论(0) 收藏 举报

rubyxmlrubyminerecursionoutputencoding

Ruby是一款对开发版本依赖度很高的语言,而且目前不支持中文(如果要使用中文字符,可使用UTF-8)

以下程序在 Ruby 1.8.6 下编译通过, IDE环境为 RubyMine [比NetBean好用]

[ruby] view
plaincopy

# 解析XML文件

require "rexml/document"

include REXML

puts "-- BEGIN --"

doc = Document.new(File.open("TestXML.xml"))

#doc.elements.each('BoardComposant') do |elem|

# cr_ele = elem.get_elements('ComponantRectangle')

# puts cr_ele

#end

doc.elements.each("BoardComposant/ComponantRectangle"){ |elem|

if "second" == elem.attributes["name"] then

puts " => 2th"

puts elem.elements[2].elements["Height"].text

elem.elements.each{ |e|

puts e.elements["Height"].text

}

end

}

#----------------------------------------------

puts "-----------------------------------------"

#----------------------------------------------

input = File.new("book.xml")

doc = Document.new(input)

root = doc.root

puts root.attributes["shelf"] # Recent Acquisitions 

doc.elements.each("library/section") { |e| puts e.attributes["name"] }

# Output: 

# Ruby 

# Space 

doc.elements.each("*/section/book") { |e| puts e.attributes["isbn"] }

# Output: 

#  0672328844 

#  0321445619 

#  0684835509 

#  074325631X 

sec2 = root.elements[2]

author = sec2.elements[1].elements["author"].text # Robert Zubrin

puts author

puts "-- End --"

以下是待解析的XML文件

book.xml

[xhtml] view
plaincopy

<library shelf="Recent Acquisitions">

<section name="Ruby">

<book isbn="0672328844">

<title>The Ruby Way</title>

<author>Hal Fulton</author>

<description>

Second edition. The book you are now reading.

Ain't recursion grand?

</description>

</book>

</section>

<section name="Space">

<book isbn="0684835509">

<title>The Case for Mars</title>

<author>Robert Zubrin</author>

<description>Pushing toward a second home for the human

race.

</description>

</book>

<book isbn="074325631X">

<title>First Man: The Life of Neil A. Armstrong</title>

<author>James R. Hansen</author>

<description>Definitive biography of the first man on

the moon. </description>

</book>

</section>

</library>

TestXML.xml

[xhtml] view
plaincopy

<?xml version="1.0" encoding="utf-8"?>

<BoardComposant>

<ComponantRectangle name="first" X="97" Y="186" Height="382" Width="587" >

<JoinSpot>

<Position>

<X>147</X>

<Y>219</Y>

</Position>

<Height>76</Height>

<Width>86</Width>

</JoinSpot>

<JoinSpot>

<Position>

<X>510</X>

<Y>236</Y>

</Position>

<Height>65</Height>

<Width>77</Width>

</JoinSpot>

<JoinSpot>

<Position>

<X>194</X>

<Y>380</Y>

</Position>

<Height>108</Height>

<Width>83</Width>

</JoinSpot>

<JoinSpot>

<Position>

<X>417</X>

<Y>400</Y>

</Position>

<Height>85</Height>

<Width>167</Width>

</JoinSpot>

</ComponantRectangle>

<ComponantRectangle name="second" X="733" Y="179" Height="410" Width="343">

<JoinSpot>

<Position>

<X>770</X>

<Y>221</Y>

</Position>

<Height>78</Height>

<Width>70</Width>

</JoinSpot>

<JoinSpot>

<Position>

<X>916</X>

<Y>259</Y>

</Position>

<Height>68</Height>

<Width>92</Width>

</JoinSpot>

<JoinSpot>

<Position>

<X>839</X>

<Y>416</Y>

</Position>

<Height>109</Height>

<Width>62</Width>

</JoinSpot>

<JoinSpot>

<Position>

<X>953</X>

<Y>410</Y>

</Position>

<Height>85</Height>

<Width>63</Width>

</JoinSpot>

</ComponantRectangle>

<ComponantRectangle name="third" X="126" Y="624" Height="282" Width="471">

<JoinSpot>

<Position>

<X>179</X>

<Y>658</Y>

</Position>

<Height>108</Height>

<Width>133</Width>

</JoinSpot>

</ComponantRectangle>

<ComponantRectangle name="forth" X="333" Y="122" Height="282" Width="471" />

</BoardComposant>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: