gpt4 book ai didi

ruby - 从具有命名空间节点的 ruby​​ 类生成 xml

转载 作者:数据小太阳 更新时间:2023-10-29 08:49:52 24 4
gpt4 key购买 nike

我有一个像这样的 ruby​​ 类:

class MyResponse
attr_accessor :results
def initialize(results = nil)
@results = results
end
end

有了这段代码,

resp = MyResponse.new 'Response text'
qname = XSD::QName.new('http://www.w3schools.com/furniture', :MyResponse)
xml = XSD::Mapping.obj2xml(resp, qname)
puts xml

我设法从那个类生成了这个 xml:

<?xml version="1.0" encoding="utf-8" ?>
<n1:MyResponse xmlns:n1="http://www.w3schools.com/furniture">
<results>Response text</results>
</n1:MyResponse>

但我想要 <results>节点也有命名空间前缀,如 <n1:results>

我已经尝试了很长时间来解决这个问题。请帮帮我。

编辑:我只需要所有节点都有命名空间前缀。我对任何其他方式或图书馆持开放态度。

最佳答案

我喜欢用 ROXML 读写 XML .不幸的是,文档并不完整,尽管可以直接从 code documentation 中检索许多信息。 .我没有成功给出一个完全符合您要求的示例(xmlns 节点只是 xmlns 而不是 xmlns:n1),但也许您可以完成它:

require 'roxml'

class Response
include ROXML

xml_name 'MyResponse'

xml_namespace :n1

xml_accessor :xmlns, from: :attr
xml_accessor :results, from: "n1:results"

def initialize
@xmlns = "http://www.w3schools.com/furniture"
end

end

response = Response.new
response.results = "Response text"
puts '<?xml version="1.0" encoding="utf-8" ?>'
puts response.to_xml
# <?xml version="1.0" encoding="utf-8" ?>
# <n1:MyResponse xmlns="http://www.w3schools.com/furniture">
# <n1:results>Response text</n1:results>
# </n1:MyResponse>

关于ruby - 从具有命名空间节点的 ruby​​ 类生成 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15637328/

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