'getElementById'에 해당되는 글 1건

  1. 2007.03.26 GetElementById()를 이용한 Element 선택
posted by 써니루루 2007. 3. 26. 10:44

읽어들일 XML 파일 'booklist.xml'

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE booklist SYSTEM "booklist.dtd">

<booklist>
  <book id="b1" kind="컴퓨터">
    <title>기초에서 실무까지 XML</title>
    <author>신민철</author>
    <publisher>프리렉</publisher>
    <price>35000</price>
  </book>
 
  <book id="b2" kind="소설">
    <title>사랑과 전쟁</title>
    <author>이사랑</author>
    <publisher>전쟁문화사</publisher>
    <price>15000</price>
  </book>
 
  <book id="b3" kind="잡지">
    <title>마이크로 소프트</title>
    <author>빌 게이츠</author>
    <publisher>마소문화사</publisher>
    <price>20000</price>
  </book>
 
  <book id="b4" kind="소설">
    <title>액션가면부인 바람났네</title>
    <author>짱구</author>
    <publisher>짱구출판사</publisher>
    <price>12000</price>
  </book>
</booklist>


Javascript에서 DOM을 이용해본 사람이라면 익숙할 getElementById() 메소드를 이용하는 동일한 사용법으로 이용할 수 있다.

ID를 이용해서 테그를 선택해야하는데. 단, HTML DOM은 이미 ID라는 attribute가 정의 되어 있지만 xml에서는 id attribute가 정해져 있는 것이 아니다.

따라서 위 xml파일과 같이 dtd 파일에서 attribute를 ID특성으로 정의 해줘야 한다.

참조하는 DTD 파일은 다음과 같다. 'booklist.dtd'

<?xml version="1.0" encoding="utf-8" ?>
<!ELEMENT booklist (book*)>
<!ELEMENT book (title,author,publisher,price)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT publisher (#PCDATA)>
<!ELEMENT price (#PCDATA)>

<!ATTLIST book
  id  ID  #REQUIRED
  kind  CDATA #IMPLIED>


이를 이용한 C# 코드는 다음과 같다.

using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;

using System.Xml;

namespace CH11
{
    class p562_FindElementById
    {
        static void Main()
        {
            string filePath = @"..\..\booklist.xml";
            XmlDocument xDoc = new XmlDocument();
            xDoc.Load(filePath);

            XmlElement element = xDoc.GetElementById("b2");

            string title = element.FirstChild.FirstChild.Value;
            Console.WriteLine(title);
        }
    }
}


ref. .NET 닷넷 개발자를 위한 XML p.562