我正在使用以下代码构建一个新的XML文档:
doc = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do
reginfo {
client_type_id client_type == :associate ? ASSOCIATE : CLIENT
parent_ {
id_ client_type == :associate ? associate_id : customer_id
client_type_id client_type == :associate ? ASSOCIATE : CLIENT
vsn client_type == :associate ? associate_vsn : customer_vsn
}
}
end
上面列出的标记client_type_id
出现在XML文件中,如client_type_id
,但这不是正确的XML标记名称格式。我需要它们是client-type-id
。
我试着用:
:"client-type-id" client_type == :associate ? ASSOCIATE : CLIENT
但是我得到:
syntax error, unexpected tIDENTIFIER, expecting '}'
:"client-type-id" client_type == :associate ? ASSOCIATE : CLIENT
^
或:
:"client-type-id" (client_type == :associate ? ASSOCIATE : CLIENT)
但是我得到:
syntax error, unexpected '(', expecting '}'
:"client-type-id" (client_type == :associate ? ASSOCIATE : CLIENT)
^
有没有办法告诉Nokogiri::XML::Builder:
- 在每行的基础上,使用破折号标记名称,它有不同的语法吗?
- 对于整个文档,在创建期间或之后,对元素名称中的所有下划线使用破折号,以便它形成格式正确的XML元素名称?
有一种奇特的方法:
Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
...
xml.send :"client-type-id", (client_type == :associate ? ASSOCIATE : CLIENT)
...
end