• 카테고리
    • 전체 글

    • 카테고리1
    • 카테고리2
    • 카테고리3
    • 카테고리4
  • 태그
  • 방명록

XPath의 마술 - 1

기술자료/Web 2007. 1. 30. 23:09
XML을 이용한 기술 중에 데이터 검색을 위한 기능을 모아 둔 것이 바로 XPath이다.
전에 코리에서 근무할 때는 이 Xml 부분에 대한 대부분은 당시 석사 과정이던
김주원씨에게 전부 맡기다 시피 해서, 내가 필요로 하는 데이터를 가져오는 방법만
이야기하고 결과는 항상 Parser를 만들어 뽑아냈다.

지금 C#을 하는데, 여기서 껄덕하면 나오는 것이 Xml 데이터 형이고,
이를 이용해서 하는 작업의 난이도도 슬슬 높아지고 있다.

이때, 각종 데이터 검색 및 조작을 위해 XPath에 대해서 하나씩 실험을 해보았고,
그 중 꼭 기억했으면 하는 것들을 나열해 보도록 하겠다.

1. 같은 내용을 제외하고 얻을 수 있는 방법
< A >
  < B  aa = '4' / >
  < B  aa = '4' / >
  < B  aa = '5' / >
< /A >

위와 같은 Xml이 있을 때, B라는 데이터를 뽑고 싶은데 그 중 aa 값이 겹치는 것은 제외하고 싶을 때다. 이 때 사용하는 XPath 식은 다음과 같다.

  "A/B[ not ( @aa = preceding-sibling::A/B@aa) ]"

즉 여기서의 핵심은 preceding-silbiling 이라는 문구 인데, 이 문구를 앞에 두면,
:: 뒤에 있는 모든 노드들을 꺼내오게 된다. 이 값을 @aa와 비교하는데, 그 중
같은 값들을 제외하는 값이라는 의미이다.

2. 찾고자 하는 노드의 값만 알 때.
< A >
  < B > 111 < /B >
  < B > 222 < /B >
  < B > 333 < /B >
<A >

만일 위와 같은 Xml 이 있을 때 B 노드안의 값이 222 인 B 노드만을 가져오고 싶을 때 쓰는 XPath 식은 다음과 같다.

 "A/B[. = '222']"

.  이라는 기호를 이용하여 현재 값을 기준으로 가져오게 된다. 만일 아래와 같은 XPath를 쓰게 되면 전혀 다른 결과를 가져오게 된다.

"A/[B = '222']"

위와 같이 하게 되면 B라는 노드 대신 A라는 노드를 가져오게 된다.


 
728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

250x250

블로그 내에 소스 코드 삽입 이사온 기념 스킨도... RSS 전문 기능 비활성화 관련. 스킨 바꾸어 보았습니다. 서버 파일 정리 좀 했습니다.

«   2025/06   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

2010 windows Azure java 수 Google Apps Engine moss Tutorial me2photo Visual Studio Buscuit twi2me 비스킷 협업 좀 블로그 WSS 인터파크 것 MOSS 2007 e-book 지름신 me2dayzm 매뉴얼 친구 개발환경 SharePoint 오류 불만 me2sms

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015-2025 Socialdev. All Rights Reserved.

Copyright © 2015-2025 Socialdev. All Rights Reserved.

티스토리툴바