0

所以我正在尝试构建一个用于导出的 XML 文档。但我需要在标题中添加额外的文本,但不知道如何。

def as_xml
  require 'rubygems'
  require 'builder'

  builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2)

  xml = builder.propertyList { |b|
    b.description(self.description);
    self.highlights.each do |h|
      b.highlight(h);
    end
  }
end

返回:

<propertyList>
  <description>"Description goes here"
  </description>
  <highlight>Highlight 1</highlight>
  <highlight>Highlight 2</highlight>
</propertyList>

有没有办法让我可以将 ID 属性添加到突出显示标签?比如<highlight id=1>等。

还想知道是否有办法定义标签是否应该使用构建器自动关闭?

例如:

<auction date=self.auctionDate />
4

1 回答 1

0

您可以将属性作为次要参数的哈希传递:

self.highlights.each_with_index do |h, i|
  b.highlight(h, id: i+1);
end

=> <highlight id='1'>Highlight 1</highlight>
=> <highlight id='2'>Highlight 2</highlight>

如果你只传递一个哈希,你可以获得一个自关闭节点:

b.auction(date: 'someDate')

=> <auction date='someDate' />
于 2013-09-02T02:07:19.947 回答