gpt4 book ai didi

ruby - 如何读取互联网上的外部 YAML 文件并输出为 XML

转载 作者:太空宇宙 更新时间:2023-11-03 16:59:16 27 4
gpt4 key购买 nike

我需要能够创建一个 Ruby 应用程序(如果可能,不要使用 Rails)打开一个包含超过 104K 行代码的外部 YAML 文件,从中读取并过滤掉以下三项内容:

!ruby/object:EvtEvent
!ruby/object:NwsPost
!ruby/object:Asset

然后将这些内容输出到必须由 Ruby 程序构建的 XML 文件。

  1. 我不清楚如何开始设置它,因为我只是一名有一年经验的初级开发人员。

  2. 虽然我在 Stack Overflow 上找到了一些显示使用 Nokogiri 的代码示例片段的内容,但我不知道将这段代码放在哪里,我必须根据我的情况修改这些代码:

    require 'yaml'
    require 'nokogiri'

    yaml = "getOrderDetails:
    Id: '114'
    Name: 'XYZ'"
    doc = YAML.load yaml

    output = Nokogiri::XML::Builder.new do |xml|
    xml.product{
    xml.id doc["getOrderDetails"]["Id"]
    xml.name doc["getOrderDetails"]["Name"]
    }
    end
    puts output.to_xml
    #=> <?xml version="1.0"?>
    #=> <product>
    #=> <id>114</id>
    #=> <name>XYZ</name>
    #=> </product>
  3. 我如何编写 init.rb 文件以启动 Ruby 程序,该程序将打开有问题的 YAML 文件,从中读取,然后将其输出为 XML?

  4. 为了让这样的 Ruby 程序处理此任务,我还需要将哪些其他 Ruby 文件放入我的 lib 文件夹中?

最佳答案

  1. 代码可以放在任何方便的地方。 Ruby 对文件位置没有真正的期望;你只需运行它们。您的开发团队可能有指导方针,因此您需要与他们交谈。

  2. “init.rb”是文件的非描述性名称。尝试使用更能说明脚本目的的内容。

  3. 使用 OpenURI 可以很容易地读取用于此目的的删除文件:

    foo = open('http://domain.com/path/to/file.yaml').read

    将返回文件的内容并将它们存储在变量foo中。

  4. 可以使用以下方法轻松解析 YAML 的内容:

    yaml = YAML.load(foo)

    此时 haml 将包含一个数组或散列,然后可以正常访问。

    更有趣的是,一旦 OpenURI 被加载,它将修补 open 方法,应该可以做如下事情:

    require 'open-uri'
    yaml = YAML.load_file('http://domain.com/path/to/file.yaml')

    YAML 必须打开一个文件才能从磁盘加载,这是 load_file 通常所做的,在 OpenURI 发挥其魔力之后,YAML 类应该继承了该魔力。我还没有测试过,但它应该可以工作。

  5. Nokogiri 的 Builder界面可能是一个不错的选择。

关于ruby - 如何读取互联网上的外部 YAML 文件并输出为 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27324682/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com