阅读 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"}