2012-11-23 3 views
2

이미 존재하는 XML 문서에 몇 가지 요소를 추가하려고합니다. 다음 코드는 원하는 노드와 내용을 추가하는 데 성공하지만 삽입 된 요소의 형식은 지정하지 않습니다. 추가 된 모든 요소는 각 요소 다음에 줄 바꿈 및 들여 쓰기가 아닌 한 줄로 끝납니다.Nokogiri로 서식있는 나누기 추가하기

이 형식을 어떻게 추가 할 수 있는지에 대한 제안 사항이 있으십니까?

코드는 다음과 같습니다

doc.xpath("//tei:div[@xml:id='versionlog']", {"tei" => "http://www.tei-c.org/ns/1.0"}).each do |node| 
    new_entry = Nokogiri::XML::Node.new "div", doc 
    new_entry["xml:id"] = "v_#{ed_no}" 
    head = Nokogiri::XML::Node.new "head", doc 
    head.content = "Description of changes for #{ed_no}" 
    new_entry.add_child(head) 
    para = Nokogiri::XML::Node.new "p", doc 
    para.content = "#{version_description}" 
    new_entry.add_child(para) 
    node.add_child(new_entry) 
end 

답변

1

이유는 XML이 한 줄에하지 않는 것이 중요하다? XML이 다시로드 될 때 XML 사양이나 구문 분석기에서 필요하지 않은 "예쁜 인쇄 된"XML을 가진 것은 순전히 외관상의 것입니다. 개인적으로, 전송 속도와 디스크 크기는 줄이지 ​​만 YMMV는 포맷하지 않는 것이 좋습니다.

당신은 XML의 아름답게 통해 XML을 실행하거나의 라인을 따라 노코 기리와 함께 게임을 할 수 있습니다

:

new_entry.add_child(para.to_xml + "\n") 

줄 바꿈 태그 사이의 텍스트 노드로 추가됩니다, 그러나 양성의 XML의 페이로드 전달 기능에는 큰 영향을 미치지 않습니다.

귀하가 주장하는 경우 "How do I pretty-print HTML with Nokogiri?"에 도착하는 방법이 설명되어 있습니다.