使用 rexml 获取相同的属性值

Get same attribute values with rexml

快速提问。

假设你有一个 xml 比如:

<ItemAttributes>
  <Author>John Green</Author>
  <Author>David Levithan</Author>
  <Binding>Hardcover</Binding>
  <Brand>Dutton Juvenile</Brand>
  <EAN>9780525421580</EAN>
</ItemAttributes>

我正在使用 rexml 来解析它。我在获取同一属性的值时卡住了。当我这样做时:

doc              = REXML::Document.new(xml_data)
doc.elements['ItemAttributes/Author/'].each do |element|
  logger.info(element)
end 

它只给我第一个属性值,即 John Green。如何获得同一属性的第二个值('Author')。我也试过做 '*' 但没有用。

有什么想法吗?

试试这个:

doc.elements.each("ItemAttributes/Author") do |author|
  logger.info(author.text)
end