-1

我正在尝试使用 Nokogiri 解析我从 URL 获取的 XML,但我无法创建它的数组,以便在整个项目中都可以访问它。

我的 XML:

<component name="Hero">
    <topic name="i1">
      <subtopic name="">
          <links>
            <link Dur="" Id="" type="article">
                <label>I am here First. </label>

    <topic name="i2">
      <subtopic name="">
          <links>
            <link Dur="" Id="" type="article">
                <label>I am here Fourth. </label>
                <label>I am here Sixth. </label>
    <topic name="i3">
      <subtopic name="">
          <links>
            <link Dur="" Id="" type="article">
                <label>I am here Fourth. </label>

我计划为每个主题创建一个数组,其中包含标签。例如:

hro_array = ["我在这里第一。","我在这里第二。","我在这里第三"。]

4

1 回答 1

1

假设您的 XML 格式正确且有效(嵌套标记的正确关闭等),那么您只需要获取 URL 的内容(例如使用builtinopen-uri),然后使用 XML 解析技术(例如 XPath)来检索所需的数据。

例如,假设您希望将主题名称的哈希值添加到嵌套标签列表中:

require 'open-uri'
require 'nokogiri'

def topic_label_hash(doc)
  doc.xpath('//topic').each_with_object({}) do |topic, hash|
    labels = topic.xpath('.//label/text()').map(&:to_s)
    name = topic.attr('name')
    hash[name] = labels
  end
end

xml = open(my_url)
doc = Nokogiri::XML(xml)
topic_label_hash(doc) # =>
# {
#   "TV" => [
#     "I am here First. ",
#     "I am here Second. ",
#     "I am here Third. ",
#     ...
#   ],
#   "Internet" => [
#     "I am here Fourth. ",
#     "I am here Fifth. ",
#     "I am here Sixth. "
#   ],
#   ...
# }
于 2015-05-06T19:21:19.560 回答