我一直在开发一个软件,在这个软件中,我需要生成一个自定义的XML文件,然后发回给客户应用程序。目前RubyRails世界上生成XML文件的解决方案最多只能说是缓慢。使用builder或event Nokogiri,虽然有一个很好的语法和可维护的解决方案,但它们消耗了太多的时间和处理。
我当然可以使用ERB,它提供了一个很好的速度,但代价是需要手工构建整个XML。
HAML 是一个伟大的工具,有一个很好的和直接的语法,而且速度相当快。但我很难用它来建立纯XML文件。这让我想知道,这是否可能?
有没有人有一些指向性的代码或文档来展示如何做到这一点,从HAML建立一个完整的,有效的XML?
在HAML中做XML很简单,只需在你的模板中开始使用。
!!! XML
这将产生
<?xml version='1.0' encoding='utf-8' ?>
那就像@beanish前面说的,你 "自己编标签"。
%test
%test2 hello
%item{:name => "blah"}
要得到
<test>
<test2>hello</test2>
<item name='blah'></item>
</test>
%test
%test2 hello
%item{:name => "blah"}
贯穿
haml hamltest.haml test.xml
浏览器打开文件
<test>
<test2>hello</test2>
<item name='blah'></item>
</test>
HAML参考资料介绍了html标签,并给出了一些例子。HAML参考资料
这演示了一些对xml文档有用的东西。
!!! XML
%root{'xmlns:foo' => 'http://myns'}
-# Note: :dashed-attr is invalid syntax
%dashed-tag{'dashed-attr' => 'value'} Text
%underscore_tag Text
- ['apple', 'orange', 'pear'].each do |fruit|
- haml_tag(fruit, "Yummy #{fruit.capitalize}!", 'fruit-code' => fruit.upcase)
%foo:nstag{'foo:nsattr' => 'value'}
输出。
<?xml version='1.0' encoding='utf-8' ?>
<root xmlns:foo='http://myns'>
<dashed-tag dashed-attr='value'>Text</dashed-tag>
<underscore_tag>Text</underscore_tag>
<apple fruit-code='APPLE'>Yummy Apple!</apple>
<orange fruit-code='ORANGE'>Yummy Orange!</orange>
<pear fruit-code='PEAR'>Yummy Pear!</pear>
<foo:nstag foo:nsattr='value'></foo:nstag>
</root>
请看 Haml::Helpers 的链接。仓单参考 更多的方法,如 haml_tag
.
如果你想对属性使用双引号。
见。https:/stackoverflow.coma967065498594。
或者在rails之外使用。
>> Haml::Engine.new("%tag{:name => 'value'}", :attr_wrapper => '"').to_html
=> "<tag name=\"value\"></tag>\n"
Haml可以像HTML一样轻松地生成XML(我已经用它来生成FBML和XHTML)。你有什么问题?
我没有使用过HAML,但如果你不能使它工作,另一个选择是 建设者.
那创建xml头呢,比如<?xml版本="1.0" encoding="UTF-8"?> ?
应该是可以的。毕竟你可以用记事本创建普通的XML。