메뉴 건너뛰기

app

[PHP] xpath 활용하기

박영식2010.09.29 01:43조회 수 4757댓글 0

    • 글자 크기
$dom = new DOMDocument(); 
$dom->load('파일경로');
$xpath = new DOMXPath($dom);
$query = 'ns:userquery';
$xpath->registerNamespace("ns", "naver:openapi");
$emps = $xpath->query($query);

        foreach ($emps as $emp) {
                print $emp->nodeValue;
        }

아래와 같은 xml일 경우 위와 같이 코딩해 사용한다.
namespace가 없을 경우엔, 아래와 같이 query변수를 지정하고, $xpath->registerNamespace("ns", "naver:openapi");는 사용하지 않는다. 하위노드일 경우에도 무조건 ns를 붙여야 한다. (cf. ns:item/ns:point/ns:x)

foreach를 사용하지 않으려면,
$result = $xpath->query($query)->nodeValue;
등으로 값을 얻을 수 있으며, rss의 item처럼 동일 이름의 다중 노드들이 존재하면
$query="/rss/channel/item/title";
$result = $xpath->query($query)->item(n)->nodeValue;
으로, n에 순서를 지정해 값을 얻을 수 있다.

$query = '//geocode/userquery';


<?xml version="1.0" encoding="utf-8" ?>
<geocode xmlns="naver:openapi">
<userquery>
<![CDATA[ 경기도성남시정자1동25-1 ]]>
</userquery>
<total>1</total>
<item>
<point>
<x>321060.0</x>
<y>529720.0</y>
</point>
<address>경기도 성남시 분당구 정자1동 25-1</address>
<addrdetail>
<sido>
<![CDATA[ 경기도 ]]>
<sigugun>
<![CDATA[ 성남시 분당구 ]]>
<dongmyun>
<![CDATA[ 정자1동 ]]>
<rest>
<![CDATA[ 25-1 ]]>
</rest>
</dongmyun>
</sigugun>
</sido>
</addrdetail>
</item>
</geocode>
박영식 (비회원)
    • 글자 크기
[oracle] 오라클 설치와 sudoers에 등록하기 (by 박영식) [xcode] 움직이는 marker(drag) (by 박영식)

댓글 달기

suritam9
2013.04.25 조회 6108
suritam9
2013.04.04 조회 2197
suritam9
2012.09.14 조회 2515
suritam9
2012.06.24 조회 2366
suritam9
2012.06.24 조회 2776
suritam9
2012.06.24 조회 2532
suritam9
2012.06.22 조회 2582
박영식
2011.09.22 조회 2544
박영식
2011.09.21 조회 2488
박영식
2011.02.18 조회 2964
박영식
2010.09.29 조회 4757
첨부 (0)
위로