메뉴 건너뛰기

app

[PHP] xpath 활용하기

박영식2010.09.29 01:43조회 수 4470댓글 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 박영식)

댓글 달기

이전 1 ... 3 4 5 6 7 8 9 10 11 12... 14다음
첨부 (0)
위로