我在XML文件开头的注释中添加了带有附加数据的XML。我想阅读这些细节,以便进行一些日志记录。
在Ruby中是否有方法读取XML注释值?
注释的细节如下:
<!-- sessionId="QQQQQQQQ" --><!-- ProgramId ="EP445522" -->
使用Nokogiri和XPath提取值:
require 'rubygems'
require 'nokogiri'
doc = Nokogiri::XML('<!-- sessionId="QQQQQQQQ" --><!-- ProgramId ="EP445522" -->')
comments = doc.xpath('//comment()')
tags = Hash[*comments.map { |c| c.content.match(/(S+)s*="(w+)"/).captures }.flatten]
puts tags.inspect
# => {"sessionId"=>"QQQQQQQQ", "ProgramId"=>"EP445522"}
你可以这样做:
require 'rexml/document'
require 'rexml/xpath'
File::open('q.xml') do |fd|
xml = REXML::Document::new(fd)
REXML::XPath::each(xml.root, '//comment()') do |comment|
case comment.string
when /sessionId/
puts comment.string
when /ProgramId/
puts comment.string
end
end
end
这实际上是循环遍历所有注释节点,然后查找您感兴趣的字符串,例如sessionId
。找到要查找的节点后,可以使用Ruby处理它们以提取所需的信息。