2010-05-10 17 views
8

Pracuję nad oprogramowaniem, w którym muszę wygenerować niestandardowy plik XML, aby wysłać go do aplikacji klienckiej. Obecne rozwiązania w świecie Ruby/Rails do generowania plików XML są w najlepszym wypadku powolne. Używając budowniczego lub zdarzenia Nokogiri, mając dobrą składnię i rozwiązania, które można utrzymać, zużywają zbyt dużo czasu i przetwarzania.Czy możliwe jest generowanie zwykłego kodu XML przy użyciu Haml?

Zdecydowanie mogę przejść do ERB, która zapewnia dobrą prędkość kosztem ręcznego tworzenia całego pliku XML.

HAML to świetne narzędzie, ma ładną i prostą składnię i jest dość szybkie. Ale walczę o zbudowanie czystych plików XML za jego pomocą. Co mnie zastanawia, czy to w ogóle możliwe?

Czy ktoś ma jakieś wskazówki do niektórych kodu lub dokumentów pokazujących, jak to zrobić, zbudować pełny, poprawny XML z HAML?

Odpowiedz

35

Doing XML w haml jest proste, wystarczy zacząć szablon z:

!!! XML 

która produkuje

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

Następnie jako @beanish powiedział wcześniej, to "nadrobić własne znaczniki":

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

dostać

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

Więcej: http://haml.info/docs/yardoc/file.REFERENCE.html#doctype_

-1

To powinno być możliwe. W końcu możesz stworzyć zwykły stary XML z Notatnikiem.

+0

Jaka jest twoja logika? Notatnik to interaktywny edytor tekstu. HAML jest automatycznym generatorem znaczników. Jakie jest połączenie? –

+0

Myślę, że on po prostu mówi, że nie ma absolutnie nic szczególnego w XML. – Matchu

2

Może brakuje mi czegoś, ale co by było tak odmiennego w używaniu haml dla xml, a nie html?

Mówisz, że walczysz, ale z czym walczycie? Czy mógłbyś opublikować przykładowy kod?

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

go uruchomić poprzez haml

haml hamltest.haml test.xml 

otworzyć plik w przeglądarce

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

odniesienie rozmowy haml o znacznikach HTML i podaje kilka przykładów. HAML reference

1

Haml może produkować XML równie łatwo jak HTML (użyłem go do FBML i XHTML). Jakie masz problemy?

0

Nie używałem HAML, ale jeśli nie możesz tego zrobić, inną opcją jest Builder.

+0

Rodzaj budulca jest do dupy w porównaniu do Haml. IMHO to najbardziej bezsensowna rzecz w ekosystemie Rails. –

-1

co z tworzeniem nagłówka xml, np. <? Xml version = "1.0" encoding = "UTF-8"?> ?

+0

Haml może to zrobić za pomocą '!!! XML'. A jeśli nie, możesz dodać to jako zwykły tekst. –

3

To pokazuje kilka rzeczy, które mogłyby wykorzystać przydatna dla dokumentów 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'} 

wyjściowa:

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

Spójrz na haml :: Pomocnicy link na haml reference, aby uzyskać więcej metod, takich jak haml_tag.

Jeśli chcesz użyć cudzysłowia dla atrybutów,

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

lub poza szynami użyć:

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