XPath 연습 사이트

NewTypeAsuka·2023년 8월 31일
0

Tip@

목록 보기
10/13

XPath 연습 사이트

XML과 관련하여 XPath라는 기술이 있다.

막 엄청 어렵지는 않은데 몇번 두드려 봐야 손에 익는 기술이라..

XPath와 관련하여 연습문제를 제공하는 사이트가 있어 기록해둔다.

  1. Option 1에 XML 스크립트를 써놓거나,

  2. Option 2에 XML 파일을 업로드한 후

  3. XPath expression에 이것저것 표현식을 넣어본 후 Evaluate로 실행한다.

XPath 연습 사이트

https://www.freeformatter.com/xpath-tester.html


XPath 기본 문법

참고로 아래 표는 XPath의 거의 모든 것..

아래 표는 XPath에서 사용하는 주요 함수다.


XPath 문제 정리

<root xmlns:hol="http://www.hollywood.org/" xmlns:ota="http://www.otaku.org" xmlns:ci="http://www.citizen.org">
    <us>
        <presidents>
            <president id="100" class="liberal" data-id="popular">Kennedy</president>
            <president id="101" class="liberal">Obama</president>
            <president id="102" class="conservative">Bush</president>
        </presidents>
        <hol:actors>
            <hol:actor id="103">Liam Neeson</hol:actor>
            <hol:actor id="104">Emma Watson</hol:actor>
        </hol:actors>
        <ci:citizens>
            <ci:citizen>Liam Neeson</ci:citizen>
            <ci:citizen>Emma Watson</ci:citizen>
            <ci:citizen>Joe Kim</ci:citizen>
            <ci:citizen>Kennedy Kim</ci:citizen>
        </ci:citizens>
    </us>
    <!-- us means USA -->
    <jp>
        <ota:characters>
            <ota:animeCharacter id="105" class="eva">Asuka</ota:animeCharacter>
            <ota:animeCharacter id="106" class="eva">Rei</ota:animeCharacter>
            <ota:animeCharacter id="107" class="onepiece">Luffy</ota:animeCharacter>
            <ota:gameCharacter id="108" class="nintendo">Pikachu</ota:gameCharacter>
            <ota:gameCharacter id="109" class="nintendo">Mario</ota:gameCharacter>
        </ota:characters>
        <singers>
            <singer id="110">Aiko</singer>
            <singer id="111">Aimyon</singer>
        </singers>
        <ci:citizens>
            <ci:citizen>Sakamoto Yuri</ci:citizen>
            <ci:citizen>Yamada Takeshi</ci:citizen>
        </ci:citizens>
    </jp>
    <!-- jp means Japan -->
    <ko>
        <presidents>
            <president id="112" class="conservative">Park Jeong Hee</president>
            <president id="113" class="liberal">Kim Dae Joong</president>
            <president id="114" class="liberal">Roh Mu Hyeon</president>
            <president id="115" class="conservative">Lee Myeong Bak</president>
        </presidents>
        <hol:singers>
            <hol:singer id="116">BTS</hol:singer>
            <hol:singer id="117">blackpink</hol:singer>
        </hol:singers>
        <ci:citizens>
            <ci:citizen>Kim Mi Young</ci:citizen>
            <ci:citizen>Lee Sang Jun</ci:citizen>
        </ci:citizens>
    </ko>
    <!-- ko means South Korea -->
    <ch>
        <ci:citizen class="chinese">Xi Jin Ping</ci:citizen>
        <ci:citizen id="beijing" class="chinese">Xiao Mei</ci:citizen>
        <ci:citizen id="nanjing" class="chinese">Xiao Mei</ci:citizen>
        <ci:halfCitizens>
            <ci:citizen class="hongkonger">Lui Wei</ci:citizen>
            <ci:citizen class="hongkonger">Lui Davidson</ci:citizen>
            <ci:citizen class="hongkonger">Lui Johnson</ci:citizen>
            <ci:citizen class="taiwanese">Chiang Kai Shek</ci:citizen>
        </ci:halfCitizens>
    </ch>
    <!-- ch means China -->
</root>

위 코드를 예제로 만들어 각종 문제 출제를 GPT에게 부탁했다.

몇번 해보니 금방 문법을 익혔다.

마지막 10개 묶음 문제 중 6번 문제를 제외하고 9개 문제를 맞췄다.

아래는 정답 코드..

count(/root/us//president | /root/ko//president) # 1번 문제
//ota:animeCharacter[@class="eva"][1]/text() # 2번 문제
count(/root/ch//ci:citizen[@class="chinese"]) # 3번 문제
//president[@data-id="popular"]/text() | //ota:animeCharacter[@class="onepiece"]/text() # 4번 문제
//ko//president[@class="liberal" and @id="114"] # 5번 문제
(/root/ch//ci:citizen[@class="chinese"])[last()]/text() # 6번 문제(못 품)
//jp//singer | //ch//ci:citizen # 7번 문제
count(//ci:citizen) # 8번 문제
count(//jp//president | //jp//ota:animeCharacter) # 9번 문제
//us//president[@class="liberal"] | //ch//ci:citizen[@class="hongkonger"] # 10번 문제

0개의 댓글