gpt4 book ai didi

ruby-on-rails - 如何在 Nokogiri 中创建具有属性和值的 xml 元素

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

我使用的是 Rails 2.1.0 和 Nokogiri 1.6.1。我想要的似乎很简单。我希望我的 Rails Rest API 返回带有如下元素的 XML:

<PeopleNumber unit="NumberOfPeople">2.235075</PeopleNumber>

我试过这样写:

xml = Nokogiri::NML::Builder.new do |xml|
xml.PeopleNumber(:unit => "NumberOfPeople") 2.235075

ActionController 引发语法错误。

如果我尝试将其重写为

xml = Nokogiri::NML::Builder.new do |xml|
xml.PeopleNumber(:unit => "NumberOfPeople") { 2.235075 }

我得到类似的东西

<PeopleNumber unit="NumberOfPeople" />

有谁知道在 Nokogiri 中获得所需行为的方法吗?

最佳答案

我知道这是一个很老的问题,但即使我偶然发现了同样的问题。
我找到了一个干净的解决方案。

builder = Nokogiri::NML::Builder.new do |xml|
xml.PeopleNumber(2.235075, :unit => "NumberOfPeople")
end

现在,如果您调试 XML 输出,您将获得正确的输出

puts builder.to_xml
# output will be following
<PeopleNumber unit="NumberOfPeople">2.235075</PeopleNumber>

解释:当您想使用 Nokogiri 构建器将一些属性和文本内容设置为 XML 标记时,您需要直接将文本内容作为第一个参数传递,然后将其他属性作为键值对传递,就像我们传递给任何方法一样。

builder = Nokogiri::NML::Builder.new do |xml|
xml.YourTagName(PLAIN_TEXT_CONTENT, attr1: value1, attr2: value2, attrN: valueN)
end

这将输出为

puts builder.to_xml
# output will be following
<YourTagName attr1="value1" attr2="value2" attrN="valueN">PLAIN_TEXT_CONTENT</YourTagName>

即使有其他方法,但这是最干净的方法。

关于ruby-on-rails - 如何在 Nokogiri 中创建具有属性和值的 xml 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26118212/

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