我一直在研究一个软件,我需要生成一个自定义XML文件以发送回客户端应用程序。 Ruby / Rails世界上用于生成XML文件的当前解决方案充其量是缓慢的。使用构建器或事件Nokogiri,虽然具有良好的语法和可维护的解决方案,但它们会消耗太多时间和处理。
我绝对可以去ERB,它提供了一个很好的速度,而不是手工构建整个XML。
HAML是一个很棒的工具,具有良好而直接的语法并且相当快。但我正在努力使用它来构建纯XML文件。这让我想知道,它有可能吗?
是否有人对某些代码或文档有一些指示,说明如何执行此操作,从HAML构建完整,有效的XML?
答案 0 :(得分:36)
在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>
更多: http://haml.info/docs/yardoc/file.REFERENCE.html#doctype_
答案 1 :(得分:8)
%test
%test2 hello
%item{:name => "blah"}
通过haml
运行它haml hamltest.haml test.xml
在浏览器中打开文件
<test>
<test2>hello</test2>
<item name='blah'></item>
</test>
HAML参考讨论了html标签并给出了一些例子。 HAML reference
答案 2 :(得分:3)
这展示了一些可用于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 reference上的Haml :: Helpers链接,了解更多方法,例如haml_tag
。
如果要对属性使用双引号,
请参阅:https://stackoverflow.com/a/967065/498594
或者在铁轨之外使用:
>> Haml::Engine.new("%tag{:name => 'value'}", :attr_wrapper => '"').to_html
=> "<tag name=\"value\"></tag>\n"
答案 3 :(得分:1)
Haml可以像HTML一样轻松地生成XML(我已经将它用于FBML和XHTML)。你有什么问题?
答案 4 :(得分:0)
我没有使用HAML,但是如果你无法使用它,则另一个选项是Builder。
答案 5 :(得分:-1)
如何创建xml标头,例如&lt;?xml version =“1.0”encoding =“UTF-8”?&gt; ?
答案 6 :(得分:-3)
应该可以。毕竟,您可以使用记事本创建普通的旧XML。