3

我正在编写一个应用程序来生成 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 创建一个名为“发送”的元素?谢谢

4

1 回答 1

6

文档

构建器通过利用 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"
于 2012-04-10T23:12:38.113 回答