'NextSibling'에 해당되는 글 1건

  1. 2007.03.26 Xml Next, Privious Sibling을 이용한 노드 이전, 이후 탐색
posted by 써니루루 2007. 3. 26. 10:01
읽어들일 XML 파일 'booklist.xml'

<?xml version="1.0" encoding="utf-8" ?>
<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>


이번 예제는 NextSibling, PreviousSibling을 이용해서 Element의 앞, 뒤 노드를 탐색하는 예제입니다.

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

using System.Xml;

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

            XmlElement eBook = xDoc.DocumentElement;
            XmlElement eFirstBook = (XmlElement)eBook.FirstChild;
            XmlElement eNextBook = (XmlElement)eFirstBook.NextSibling;

            XmlElement eLastBook = (XmlElement)eBook.LastChild;
            XmlElement ePreviousBook = (XmlElement)eLastBook.PreviousSibling;

            if (eNextBook == ePreviousBook)
            {
                Console.WriteLine("동일한 Book 엘리먼트 입니다.");
            }
            else
            {
                Console.WriteLine("다른 Book 엘리먼트 입니다.");
            }
        }
    }
}



위 원본 XML 파일에 book 노드가 4개이고,
첫노드의 다음 노드는 b2 book이고, 마지막노드의 이전 노드는 b3 book이 된다.
따라서 두개의 book 엘리먼트는 다른 엘리먼트가 된다.

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