我正在编写一个生成XML文件的应用程序作为SipP的输入。 SipP经常使用的一个标签是“发送”
问题是,当我使用nokogiri为我构建xml时
builder = Nokogiri::XML::Builder.new do |xml|
xml.send "Some Content"
end
我明白了
<?xml version="1.0"?>
<Some Content/>
当我这样做时会发生同样的事情:
builder = Nokogiri::XML::Builder.new do |xml|
xml.send(:'send', "Some Content")
end
我不能用大写字母拼写'SEND',因为SipP不会这样理解。
如何强制nokogiri创建一个名为'send'的元素? 谢谢
答案 0 :(得分:6)
来自docs:
构建器通过利用method_missing来工作。不幸 某些方法在ruby中定义为难以或危险的 去掉。您可能想要创建名称为“type”,“class”和的标签 例如“id”。在这种情况下,您可以使用下划线 从方法调用中消除标记名称的歧义。
请检查以下内容:
irb(main):007:0> Nokogiri::XML::Builder.new { |xml| xml.send_ "foo" }.to_xml
=> "<?xml version=\"1.0\"?>\n<send>foo</send>\n"