ruby - 使用Ruby解析xml内容并生成文本文件

标签 ruby xml

我怎样才能生成这样的文件:

Books/Jungle_Book
Books/Alice_in_Wonderland
Foods/Bacon
Foods/Kale
Foods/Eggs

来自下面的 XML:

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.man.com/2006/04/metadata">
    <types>
        <members>Jungle_Book</members>
        <members>Alice_in_Wonderland</members>
        <name>Books</name>
    </types>
    <types>
        <members>Bacon</members>
        <members>Kale</members>
        <members>Eggs</members>
        <name>Foods</name>
    </types>
    <version>19.0</version>
</Package>

<name>这样的标签数量和 <members>从一个 xml 到另一个 xml,就像这样

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.man.com/2006/04/metadata">
    <types>
        <members>Jungle_Book</members>
        <members>Alice_in_Wonderland</members>
        <name>Books</name>
    </types>
    <types>
        <members>Bacon</members>
        <members>Kale</members>
        <members>Eggs</members>
        <name>Foods</name>
    </types>
    <types>
        <members>USA</members>
        <members>UK</members>
        <members>Ireland</members>
        <members>Japan</members>
        <name>Countries</name>
    </types>
    <version>19.0</version>
</Package>

最佳答案

rexml来自 ruby​​ STLib 的模块可能对您有所帮助。

下面的片段,

require 'rexml/document'
include REXML

xmlfile = File.new("document.xml")
xmldoc = Document.new(xmlfile)

xmldoc.elements.each("Package/types") { |t|
  t.elements.each("name") { |n|
    t.elements.each("members") {
      |m| puts "#{n.text}/#{m.text}"
    }
  }
}

生成类似的输出,

Books/Jungle_Book
Books/Alice_in_Wonderland
Foods/Bacon
Foods/Kale
Foods/Eggs
Countries/USA
Countries/UK
Countries/Ireland
Countries/Japan

link to repl

关于ruby - 使用Ruby解析xml内容并生成文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49946945/

相关文章:

java - Android - 如何使 View 仅填充屏幕的其余部分

java - 如何在Android上缓存数据?

java - 如何在控制台输入后触发testng文件的执行

java - 泛型中的泛型

ruby - 如何在 Ruby 中用字符名称替换 UTF-8 字符?

mysql - 查询 rails 中的加入关联

ruby-on-rails - 如何在 View 中通过参数 id 查找值?

android - 如何将矢量路径转换为图像以及反之亦然

ruby-on-rails - RoR AR 用户模型

ruby - 在 Sinatra 中间件中访问 session