• 카테고리
    • 전체 글

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

'2007/01/30'에 해당되는 글 1건

  • 2007.01.30 XPath의 마술 - 1

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

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

  • «
  • 1
  • »
250x250

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

«   2007/01   »
일 월 화 수 목 금 토
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 31

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

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015-2025 Socialdev. All Rights Reserved.

Copyright © 2015-2025 Socialdev. All Rights Reserved.

티스토리툴바