2011-03-22 2 views
4

배열의 태그 이름 집합을 반복하고 있으므로 "< <"메서드의 수동 XML을 사용하지 않고 각각을 빌더를 사용하여 인쇄하려고합니다.어떻게 Nokogiri :: XML :: Builder로 동적 태그를 생성 할 수 있습니까?

builder = Nokogiri::XML::Builder.new do |xml| 

    for tag in tags 
    xml.tag! tag, someval 
    end 
end 

그것을 할 것이지만, 그냥 이름으로 태그를 "태그"를 생성하고, 요소의 텍스트 값으로 태그 변수를두고 :

나는 생각했다.

아무도 도와 줄 수 있습니까? 이것은 상대적으로 간단해야만하는 것처럼 보입니다. 검색 엔진에서 대답을 찾는 데 어려움이 있습니다. 나는 아마 올바른 방식으로 질문하지 않을 것이다.

+1

을 method_missing 사용하기 위해서는 Nokogirl 또는 노코 기리입니까? :) –

답변

10

다음을 시도해보십시오. Nokogiri가 실수하지 않으면 루트 노드를 추가했습니다.

builder = Nokogiri::XML::Builder.new do |xml| 
    xml.root do |root| 
    for tag in tags 
     xml.send(tag, someval) 
    end 
    end 
end 
+1

하위 요소 블록에서도 효과가 있습니다! 예를 들면 다음과 같습니다. x.send (: key) {x.val 3} – schory

5

시도가 BTW

builder = Nokogiri::XML::Builder.new do |xml| 
    for tag in tags 
    xml.method_missing(tag, someval) 
    end 
end