Juwan Park :: 루비로 XML 파일 생성하기

루비로 XML 파일 생성하기

★프로그래밍/Ruby :: 2016. 8. 18. 15:05

루비로 XML 파일을 생성하는 방법을 설명하는 포스트입니다.

자, 루비로 XML 파일을 생성하려면 Builder 라이브러리가 필요합니다.

콘솔 명령창에서 'gem list --local'이라고 쳐서 나오는 목록 중에 'builder'가 없으면 설치해야 합니다.
builder를 설치하려면 'gem install builder'라고 치시면 됩니다.

builder 라이브러리가 설치됐으면, 다음과 같이 코딩해 봅시다.

require 'builder'  # Builder 라이브러리 불러오기

def buildxml
  element = Builder::XmlMarkup.new( :indent => 2 )  # 새 XML 문서
  element.instruct!                                 # XML DTD 생성
  element.girlgroup {
    # girlgroup 태그 생성
    element.group("name" => "여자친구", "alias" => "GFRIEND", "debut-date" => "20150116") {
      # girlgroup 태그 안에 속성이 name="여자친구"인 group 태그 생성하고
      # 그 안에 name 태그 생성
      element.member("name" => "소원", "birthday" => "19951207", "position" => "leader, sub-vocal")
      element.member("name" => "예린", "birthday" => "19960819", "position" => "sub-vocal, lead-dancer")
      element.member("name" => "은하", "birthday" => "19970530", "position" => "lead-vocal")
      element.member("name" => "유주", "birthday" => "19971014", "position" => "main-vocal")
      element.member("name" => "신비", "birthday" => "19980603", "position" => "main-dancer, sub-vocal")
      element.member("name" => "엄지", "birthday" => "19980819", "position" => "sub-vocal")
      # album 태그 생성
      element.album("name" => "Season of Glass", "type" => "ep", "release" => "20150115") {
        # album 태그 안에 song 태그 생성
        element.song("Intro (Season of Glass)", "track" => "1")
        element.song("유리구슬 (Glass Bead)", "track" => "2", "title" => "yes")
        element.song("Neverland", "track" => "3")
        element.song("White (하얀마음)", "track" => "4")
        element.song("유리구슬 (Glass Bead) (Inst.)", "track" => "5")
      }
      element.album("name" => "Flower Bud", "type" => "ep", "release" => "20150723") {
        element.song("Intro (Flower Bud)", "track" => "1")
        element.song("오늘부터 우리는 (Me gustas tu)", "track" => "2", "title" => "yes")
        element.song("하늘 아래서", "track" => "3")
        element.song("ONE", "track" => "4")
        element.song("기억해 (My Buddy)", "track" => "5")
        element.song("오늘부터 우리는 (Me gustas tu) (Inst.)", "track" => "6")
      }
      element.album("name" => "SNOWFLAKE", "type" => "ep", "release" => "20160125") {
        element.song("Intro (Snowflake)", "track" => "1")
        element.song("시간을 달려서 (Rough)", "track" => "2", "title" => "yes")
        element.song("내 이름을 불러줘 (Say My Name)", "track" => "3")
        element.song("사랑별 (Luv Star)", "track" => "4")
        element.song("그런 날엔 (Someday)", "track" => "5")
        element.song("TRUST", "track" => "6")
        element.song("시간을 달려서 (Rough) (Inst.)", "track" => "7")
      }
      element.album("name" => "LOL", "type" => "studio", "release" => "20160711") {
        element.song("INTRO", "track" => "1")
        element.song("물들어요 (Fall in Love)", "track" => "2")
        element.song("너 그리고 나 (NAVILLERA)", "track" => "3", "title" => "yes")
        element.song("LOL", "track" => "4")
        element.song("한 뼘 (Distance)", "track" => "5")
        element.song("물꽃놀이 (Water Flower)", "track" => "6")
        element.song("Mermaid", "track" => "7")
        element.song("나의 일기장 (Sunshine)", "track" => "8")
        element.song("나침반 (Compas)", "track" => "9")
        element.song("찰칵 (Click)", "track" => "10")
        element.song("바람에 날려 (Gone with the wind)", "track" => "11")
        element.song("너 그리고 나 (NAVILLERA) (Inst.)", "track" => "12")
      }
    }
  }
end

puts buildxml  # 결과물 출력

이 코드는 걸그룹 관련 정보를 담은 XML 문서를 생성하는 코드입니다. 여기서는 여자친구(GFRIEND)를 예로 들어 작성해 보았습니다.

이 코드를 실행하면,

<?xml version="1.0" encoding="UTF-8"?>
<girlgroup>
  <group name="여자친구" alias="GFRIEND" debut-date="20150116">
    <member name="소원" birthday="19951207" position="leader, sub-vocal"/>
    <member name="예린" birthday="19960819" position="sub-vocal, lead-dancer"/>
    <member name="은하" birthday="19970530" position="lead-vocal"/>
    <member name="유주" birthday="19971014" position="main-vocal"/>
    <member name="신비" birthday="19980603" position="main-dancer, sub-vocal"/>
    <member name="엄지" birthday="19980819" position="sub-vocal"/>
    <album name="Season of Glass" type="ep" release="20150115">
      <song track="1">Intro (Season of Glass)</song>
      <song track="2" title="yes">유리구슬 (Glass Bead)</song>
      <song track="3">Neverland</song>
      <song track="4">White (하얀마음)</song>
      <song track="5">유리구슬 (Glass Bead) (Inst.)</song>
    </album>
    <album name="Flower Bud" type="ep" release="20150723">
      <song track="1">Intro (Flower Bud)</song>
      <song track="2" title="yes">오늘부터 우리는 (Me gustas tu)</song>
      <song track="3">하늘 아래서</song>
      <song track="4">ONE</song>
      <song track="5">기억해 (My Buddy)</song>
      <song track="6">오늘부터 우리는 (Me gustas tu) (Inst.)</song>
    </album>
    <album name="SNOWFLAKE" type="ep" release="20160125">
      <song track="1">Intro (Snowflake)</song>
      <song track="2" title="yes">시간을 달려서 (Rough)</song>
      <song track="3">내 이름을 불러줘 (Say My Name)</song>
      <song track="4">사랑별 (Luv Star)</song>
      <song track="5">그런 날엔 (Someday)</song>
      <song track="6">TRUST</song>
      <song track="7">시간을 달려서 (Rough) (Inst.)</song>
    </album>
    <album name="LOL" type="studio" release="20160711">
      <song track="1">INTRO</song>
      <song track="2">물들어요 (Fall in Love)</song>
      <song track="3" title="yes">너 그리고 나 (NAVILLERA)</song>
      <song track="4">LOL</song>
      <song track="5">한 뼘 (Distance)</song>
      <song track="6">물꽃놀이 (Water Flower)</song>
      <song track="7">Mermaid</song>
      <song track="8">나의 일기장 (Sunshine)</song>
      <song track="9">나침반 (Compas)</song>
      <song track="10">찰칵 (Click)</song>
      <song track="11">바람에 날려 (Gone with the wind)</song>
      <song track="12">너 그리고 나 (NAVILLERA) (Inst.)</song>
    </album>
  </group>
</girlgroup>

이렇게 위와 같은 내용의 XML 문서가 생성되어 콘솔에 출력될 것입니다.

그러면, 이 XML 문서를 파일로 저장할 방법이 있을까요? 네. 있습니다.

저기 맨 처음 코드에서 마지막의 'puts buildxml'이라고 되어 있는 곳을 다음과 같이 바꿔 봅시다.

out_file = File.new("girlgroup.xml", "w")
out_file.puts(buildxml)
out_file.close

이렇게 바꾼 뒤 실행해 보면 girlgroup.xml 파일이 생성되고, 열어 보면 생성된 저 내용이 그대로 들어 있음을 알 수 있을 것입니다.


이렇듯 루비에서는 builder 라이브러리를 이용하여 XML 문서를 생성할 수 있습니다.

많은 도움 되셨나요?

유용한 정보로 활용하시기 바랍니다.

댓글을 달아 주세요.

Today 29    Yday 25    Tot 73,537
Juwan Park
Juwan Park's blog is powered by Daum and TISTORY.
Contemporary Blue for TISTORY.
Designed by Juwan Park. Creative Commons License
▲ TOP