3

SipPへの入力としてXMLファイルを生成するアプリケーションを作成しています。SipPで頻繁に使用されるタグの1つは、「送信」です。

問題は、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

SipPはそれをそのように理解しないので、大文字で「SEND」を綴ることはできません。

nokogiriに「send」という名前の要素を作成させる方法はありますか?ありがとうございました

4

1 に答える 1

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"
于 2012-04-10T23:12:38.113 に答える