Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Ruby解析xml内容并生成文本文件_Ruby_Xml - Fatal编程技术网

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

使用Ruby解析xml内容并生成文本文件,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&g

如何生成类似以下内容的文件:

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>

丛林之书
爱丽丝梦游仙境
书
培根
甘蓝
鸡蛋
食品
19
这样的标记的数量因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>

丛林之书
爱丽丝梦游仙境
书
培根
甘蓝
鸡蛋
食品
美国
英国
爱尔兰
日本
国家
19
来自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

使用Nokogiri是否不是一种选择?另外,当你说标签不同时,你是指标签名称还是标签值?更新了问题以使其更清楚我假设你指的是
标签的数量不同。如果
标记的数量不同,那么您也需要为此提供所需的输出。