2010-05-10 30 views
8

Ho lavorato a un software in cui ho bisogno di generare un file XML personalizzato da inviare a un'applicazione client. Le soluzioni attuali sul mondo Ruby/Rails per la generazione di file XML sono lente, nel migliore dei casi. Usando il builder o l'evento Nokogiri, pur avendo una buona sintassi e soluzioni manutenibili, consumano troppo tempo ed elaborazione.È possibile generare codice XML semplice utilizzando Haml?

Potrei sicuramente andare a ERB, che offre una buona velocità a scapito della costruzione dell'intero XML a mano.

HAML è un ottimo strumento, ha una sintassi semplice e diretta ed è abbastanza veloce. Ma sto lottando per creare file XML puri che lo utilizzano. Il che mi fa meravigliare, è possibile a tutti?

Qualcuno ha qualche suggerimento su un codice o documenti che mostrano come fare questo, creare un XML valido e completo da HAML?

risposta

35

Fare XML in HAML è facile, basta iniziare il modello con:

!!! XML 

che produce

<?xml version='1.0' encoding='utf-8' ?> 

Poi, come @beanish detto in precedenza, è "make up i propri tag":

%test 
    %test2 hello 
    %item{:name => "blah"} 

per ottenere

<test> 
    <test2>hello</test2> 
    <item name='blah'></item> 
</test> 

Più: http://haml.info/docs/yardoc/file.REFERENCE.html#doctype_

-1

Dovrebbe essere possibile. Dopotutto è possibile creare semplici vecchi XML con Blocco note.

+0

Qual è la sua logica? Blocco note è un editor di testo interattivo. HAML è un generatore di markup automatizzato. Qual è la connessione? –

+0

Penso che stia solo dicendo che non c'è assolutamente niente di stravagante in XML. – Matchu

2

Forse mi manca qualcosa, ma cosa sarebbe diverso dall'utilizzo di haml per xml anziché html?

Hai detto che stai lottando, ma con cosa stai lottando? Potresti postare qualche codice di esempio?

8
%test 
    %test2 hello 
    %item{:name => "blah"} 

eseguirlo tramite Haml

haml hamltest.haml test.xml 

aprire il file in un browser

<test> 
    <test2>hello</test2> 
    <item name='blah'></item> 
</test> 

I colloqui di riferimento Haml sui tag HTML e fornisce alcuni esempi. HAML reference

1

Haml può produrre XML con la stessa facilità di HTML (l'ho usato per FBML e XHTML). Che problemi stai avendo?

0

Non ho usato HAML, ma se non riesci a farlo funzionare un'altra opzione è Builder.

+0

Il tipo di builder fa schifo paragonandolo a Haml. IMHO è la cosa più inutile nell'ecosistema di Rails. –

-1

e sulla creazione dell'intestazione xml, ad es. <? Xml version = "1.0" encoding = "UTF-8"?> ?

+0

Haml può farlo con '!!! Xml'. E se non potesse, potresti includerlo come testo normale. –

3

Questo dimostra alcune cose che potrebbero utilizzare utile per i documenti 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'} 

uscita:

<?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> 

sguardo al Haml :: helper dei link sul haml reference per altri metodi come haml_tag.

Se si desidera utilizzare le virgolette doppie per gli attributi,

See: https://stackoverflow.com/a/967065/498594

o al di fuori di rotaie uso:

>> Haml::Engine.new("%tag{:name => 'value'}", :attr_wrapper => '"').to_html 
=> "<tag name=\"value\"></tag>\n" 
Problemi correlati