Gag*_*gan 1 ruby xml ruby-on-rails libxml-ruby xml-parsing
我正在使用 libxml-ruby gem 来读取 xml 字符串。
我无法从 xml 字符串中提取所需的信息。
目前我有以下xml
<?xml version="1.0" encoding="utf-8"?>
<message>
<head>
<api_key>252f5df2df522fg5fd25df2df5df2fd5</api_key>
<user>123</user>
<secret>********************</secret>
<signature>****************</signature>
<synchronization token="kj0s09ew090mv904v09409905b" last_synchronize_on="2010-01-02 11:30" />
</head>
<blockings>
<blocking token="AAA" start_time="2010-01-01 10:00" end_time="2010-01-01 12:00" method="REQUEST" is_forced="FALSE" />
<blocking token="BBB" start_time="2010-01-03 15:00" end_time="2010-01-03 18:00" method="REQUEST" is_forced="FALSE" />
</blockings>
</message>
Run Code Online (Sandbox Code Playgroud)
我如何从这个 xml 字符串中获取 api_key、同步令牌、last_synchronize_on 值?
如何获取此字符串的阻塞节点内的阻塞节点的信息?
谢谢
您将使用LibXML::XML::Parser来获取LibXML::XML::Document:
p = LibXML::XML::Parser.file(xml_file)
# or p = LibXML::XML::Parser.string(xml_string)
doc = p.parse
Run Code Online (Sandbox Code Playgroud)
然后使用find
和一些 XPath 来查找您的节点:
api_key_node = doc.find('//api_key').first
Run Code Online (Sandbox Code Playgroud)
这会给你一个输入LibXML::XML::Node
,api_key_node
这样你就可以打电话content
来得到你想要的东西:
api_key = api_key_node.content
# "252f5df2df522fg5fd25df2df5df2fd5"
Run Code Online (Sandbox Code Playgroud)
类似的事情适用于同步,但你会[]
用来访问属性值:
sync = doc.find('//synchronization').first
token = sync['token']
last_sync = sync['last_syncrhonize_on']
Run Code Online (Sandbox Code Playgroud)
对<blocking>
节点再次进行相同的处理,但您将使用each
而不是使用first
.
归档时间: |
|
查看次数: |
2358 次 |
最近记录: |