Ruby XML 到 JSON 转换器

作者:编程家 分类: xml 时间:2025-10-21

使用 Ruby 编程语言,我们可以很方便地将 XML 数据转换为 JSON 格式。这对于处理和分析 XML 数据并将其转换为更易于处理的 JSON 数据非常有用。本文将介绍如何使用 Ruby 编写一个简单的 XML 到 JSON 转换器,并提供一个案例代码来演示其使用。

案例代码:

下面是一个简单的示例代码,展示了如何使用 Ruby 编写一个 XML 到 JSON 转换器。

ruby

require 'json'

require 'nokogiri'

def xml_to_json(xml_data)

doc = Nokogiri::XML(xml_data)

json_data = {}

parse_node(doc.root, json_data)

JSON.pretty_generate(json_data)

end

def parse_node(node, json_data)

if node.element?

if node.children.empty?

json_data[node.name] = node.content

else

if node.children.all? { |child| child.name == node.children.first.name }

json_data[node.name] = node.children.map { |child| parse_node(child, {}) }

else

json_data[node.name] = {}

node.children.each { |child| parse_node(child, json_data[node.name]) }

end

end

end

json_data

end

# 示例用法

xml_data = '

Everyday Italian

Giada De Laurentiis

2005

30.00

Harry Potter

J.K. Rowling

2005

29.99

'

puts xml_to_json(xml_data)

使用 Nokogiri 解析 XML:

在上面的代码中,我们使用了 Nokogiri gem 来解析 XML 数据。Nokogiri 是一个功能强大的 Ruby gem,用于解析和操作 XML 和 HTML 文档。通过使用 Nokogiri,我们可以方便地遍历和操作 XML 文档的各个节点。

将 XML 转换为 JSON:

在 `xml_to_json` 方法中,我们首先创建了一个 Nokogiri 文档对象 `doc`,并将 XML 数据传递给它。然后,我们定义了一个空的 Hash 对象 `json_data`,用于存储最终的 JSON 数据。

接下来,我们调用 `parse_node` 方法,传递根节点和 `json_data`。在 `parse_node` 方法中,我们遍历每个节点,并根据节点的类型进行相应的处理。如果节点是元素节点(element),我们将其名称作为 key,并根据其子节点的数量决定如何处理。

如果节点没有子节点,我们将其内容作为值存储在 `json_data` 中。如果节点有多个相同名称的子节点,则将它们存储为一个数组。否则,我们将子节点存储为一个嵌套的 Hash 对象,并递归调用 `parse_node` 方法处理子节点。

最后,我们使用 `JSON.pretty_generate` 方法将 `json_data` 转换为格式化的 JSON 字符串,并输出结果。

示例用法:

在示例代码中,我们定义了一个包含两本书的简单的 XML 文档。每本书都有一个类别、标题、作者、年份和价格。我们将这个 XML 数据传递给 `xml_to_json` 方法,并将结果打印输出。

运行代码,我们将得到以下 JSON 格式的输出:

json

{

"bookstore": {

"book": [

{

"category": "cooking",

"title": "Everyday Italian",

"author": "Giada De Laurentiis",

"year": "2005",

"price": "30.00"

},

{

"category": "children",

"title": "Harry Potter",

"author": "J.K. Rowling",

"year": "2005",

"price": "29.99"

}

]

}

}

使用 Ruby 编程语言和 Nokogiri gem,我们可以轻松地将 XML 数据转换为 JSON 格式。这使得处理和分析 XML 数据变得更加方便。本文提供了一个简单的示例代码,展示了如何使用 Ruby 编写一个 XML 到 JSON 转换器。