使用 Nokogiri 构建 XML 文档时如何用破折号替换下划线?
How to replace underscore with dashes when building XML document with Nokogiri?
我正在使用以下代码构建一个新的 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
我正在使用以下代码构建一个新的 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