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

Chr*_*lor 3 ruby builder send nokogiri

我正在编写一个应用程序来生成XML文件作为SipP的输入.SipP经常使用的一个标签是"发送"

问题是,当我使用nokogiri为我构建xml时

builder = Nokogiri::XML::Builder.new do |xml|
  xml.send "Some Content"
end
Run Code Online (Sandbox Code Playgroud)

我明白了

<?xml version="1.0"?>
<Some Content/>
Run Code Online (Sandbox Code Playgroud)

我这样做时也是如此:

builder = Nokogiri::XML::Builder.new do |xml|
  xml.send(:'send', "Some Content")
end
Run Code Online (Sandbox Code Playgroud)

我不能用大写字母拼写'SEND',因为SipP不会那样理解它.

任何想法如何强制nokogiri创建一个名为'发送'的元素?谢谢

Nik*_* B. 6

来自文档:

构建器通过利用method_missing来工作.不幸的是,一些方法在红宝石中定义,难以去除或有危险.例如,您可能想要创建名称为"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"
Run Code Online (Sandbox Code Playgroud)