2010-05-10 27 views
8

Tôi đã làm việc trên một phần mềm mà tôi cần tạo một tệp XML tùy chỉnh để gửi lại cho ứng dụng khách. Các giải pháp hiện tại trên thế giới Ruby/Rails để tạo ra các tệp tin XML là chậm, tốt nhất. Sử dụng trình xây dựng hoặc sự kiện Nokogiri, trong khi có một cú pháp đẹp và là các giải pháp có thể duy trì, chúng tiêu tốn quá nhiều thời gian và quá trình xử lý.Có thể tạo XML thuần cũ bằng Haml không?

Tôi chắc chắn có thể truy cập ERB, cung cấp tốc độ tốt với chi phí xây dựng toàn bộ XML bằng tay.

HAML là một công cụ tuyệt vời, có cú pháp đẹp và thẳng về phía trước và khá nhanh. Nhưng tôi đang đấu tranh để xây dựng các tệp XML thuần túy bằng cách sử dụng nó. Điều gì làm tôi ngạc nhiên, liệu có thể nào?

Có ai có một số gợi ý cho một số mã hoặc tài liệu cho biết cách thực hiện việc này, xây dựng XML đầy đủ, hợp lệ từ HAML không?

Trả lời

35

Làm XML trong HAML rất dễ dàng, chỉ cần bắt đầu mẫu của bạn với:

!!! XML 

trong đó sản xuất

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

Rồi như @beanish đã nói trước đó, bạn "tạo nên các thẻ của riêng bạn":

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

để có được

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

thêm: http://haml.info/docs/yardoc/file.REFERENCE.html#doctype_

-1

Nó sẽ là có thể. Sau khi tất cả các bạn có thể tạo XML cũ đơn giản với Notepad.

+0

logic của bạn là gì? Notepad là một trình soạn thảo văn bản tương tác. HAML là trình tạo đánh dấu tự động. Kết nối là gì? –

+0

Tôi nghĩ anh ấy chỉ nói rằng hoàn toàn không có gì lạ mắt về XML. – Matchu

2

Có thể tôi đang thiếu thứ gì đó, nhưng điều gì sẽ khác biệt khi sử dụng haml cho xml thay vì html?

Bạn nói bạn đang gặp khó khăn, nhưng bạn đang đấu tranh với điều gì? Bạn có thể đăng một số mã mẫu?

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

chạy nó thông qua Haml

haml hamltest.haml test.xml 

mở tập tin trong một trình duyệt

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

Các cuộc đàm phán tham khảo HAML về các thẻ html và đưa ra một số ví dụ. HAML reference

1

Haml có thể tạo XML dễ dàng như HTML (tôi đã sử dụng nó cho FBML và XHTML). Có vấn đề gì bạn đang có?

0

Tôi đã không sử dụng HAML, nhưng nếu bạn không thể làm cho nó hoạt động một tùy chọn khác là Builder.

+0

Builder loại sucks bằng cách so sánh với Haml. IMHO đó là điều vô nghĩa nhất trong hệ sinh thái Rails. –

-1

điều gì về cách tạo tiêu đề xml, ví dụ: <? Xml version = "1.0" encoding = "UTF-8"?> ?

+0

Haml có thể làm điều đó với '!!! XML'. Và nếu nó không thể, bạn có thể bao gồm nó dưới dạng văn bản thuần túy. –

3

này cho thấy một số điều mà có thể sử dụng hữu ích cho các tài liệu 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'} 

Output:

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

Nhìn vào Haml :: Helpers liên kết trên haml reference để biết thêm các phương thức như haml_tag.

Nếu bạn muốn sử dụng hai dấu ngoặc kép cho các thuộc tính,

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

Hoặc bên ngoài đường ray sử dụng:

>> Haml::Engine.new("%tag{:name => 'value'}", :attr_wrapper => '"').to_html 
=> "<tag name=\"value\"></tag>\n" 
Các vấn đề liên quan