Разбор XML с Ruby и Nokogiri - PullRequest
1 голос
/ 22 июня 2010

У меня следующая структура XML:

<charsets>
  <charset>
    <name>ANSI_X3.4-1968</name>
    <aliases>
      <alias>iso-ir-6</alias>
      <alias>ANSI_X3.4-1986</alias>
      <alias>ISO_646.irv:1991</alias>
      <alias>ASCII</alias>
      <alias>ISO646-US</alias>
      <alias>US-ASCII</alias>
      <alias>us</alias>
      <alias>IBM367</alias>
      <alias>cp367</alias>
      <alias>csASCII</alias>
    </aliases>
  </charset>
  <charset>
    <name>ISO-10646-UTF-1</name>
    <aliases>
      <alias>csISO10646UTF1</alias>
    </aliases>
  </charset>
</charsets>

Я могу получить текстовое содержимое узлов name, используя Ruby и Nokogiri, используя:

require 'nokogiri'
require 'open-uri'

doc = Nokogiri::XML(File.open("StandardCharsets.xml"))
@charsets = doc.css("charsets name").map {|node| node.children.text }

Но чтоЯ хочу, чтобы текстовое содержимое всех узлов name и alias в порядке, как они показаны в исходном документе.Все, что я пробую, терпит неудачу.

У кого-нибудь есть хороший пример того, как это сделать?

1 Ответ

6 голосов
/ 22 июня 2010

Измените строку

@charsets = doc.css("charsets name").map {|node| node.children.text }

на

@charsets = doc.css("charsets name, charsets alias").map {|node| node.children.text }
...