阅读 XML Ruby 中的评论值
Read XML commented value in Ruby
我有 XML,在 XML 文件开头的注释中有其他数据。
我想阅读这些详细信息以进行一些日志记录。
有什么方法可以读取 Ruby 中 XML 的注释值吗?
评论的详细信息是:
<!-- 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 处理它们以提取所需的信息。
使用 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"}
我有 XML,在 XML 文件开头的注释中有其他数据。 我想阅读这些详细信息以进行一些日志记录。
有什么方法可以读取 Ruby 中 XML 的注释值吗?
评论的详细信息是:
<!-- 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 处理它们以提取所需的信息。
使用 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"}