使用nokogiri builder(ruby)设置标记属性并将纯文本内容添加到标记

我正在尝试使用Nokogiri构建XML,其中一些标签在标签内部具有属性和纯文本。 所以我想尝试这个:

  hello  

使用构建器我有这个:

 builder = Nokogiri::XML::Builder.new { |xml| xml.Transaction("requestName" => "OrderRequest") do xml.Option("b" => "hive").text("hello") end } 

它呈现给:

  hello  

所以它产生hello ,我希望它是hello

我不知道该怎么做。 如果我尝试通过只提供我想要的XML来获取Nokogiri对象,它会将内部文本放在标记中设置为children=[#]我不知道如何从构建器中设置它。

如果有人在Nokogiri文档中提到了这一点,我将不胜感激。

您可以使用两种方法。

使用.text

您可以调用.text方法来设置节点的文本:

 builder = Nokogiri::XML::Builder.new { |xml| xml.Transaction("requestName" => "OrderRequest") do xml.Option("b" => "hive"){ xml.text("hello") } end } 

产生:

     

解决方案使用文本参数

或者,您可以将文本作为参数传递。 文本应在属性值之前传入。 换句话说,标签以以下forms添加:

 tag "text", :attribute => 'value' 

在这种情况下,所需的构建器将是:

 builder = Nokogiri::XML::Builder.new { |xml| xml.Transaction("requestName" => "OrderRequest") do xml.Option("hello", "b" => "hive") end } 

生成相同的XML: