Nokogiri :: XML :: Builder:需要使用字符串" send"作为元素名称

时间:2012-04-10 23:05:09

标签: ruby nokogiri send builder

我正在编写一个生成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'的元素? 谢谢

1 个答案:

答案 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"