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

루비로 XML 파일 생성하기

★프로그래밍/Ruby :: 2016.08.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 6    Yday 29    Tot 67,005
Juwan Park
Juwan Park's blog is powered by Daum and TISTORY.
Contemporary Blue for TISTORY.
Designed by Juwan Park. Creative Commons License
▲ TOP