2011-11-03 2 views
0

MySQL과 PHP에서 일반적으로하는 것처럼 결과를 XML 파일로 필터링하는 방법을 찾으려고합니다.PHP로 XML 필터링 및 정렬

< 사용자 > < LD : 내 쿼리를 가정

파일 구조가 같은 것이 있다면 내가 XML 파일에서 같은 쿼리를 실행 얼마나, "ID의 ASC하여 사용자 순서에서 ID, NAME을 선택"입니다 > 1 </ID > < 이름 > 밥 </이름 > </사용자 >

...

많은 감사합니다 :)

+0

무엇 XPath는 어떻습니까? – ComFreek

+0

모든 솔루션을 환영합니다! – Tim

+0

내 대답보기;) – ComFreek

답변

1

XPath을 사용할 수 있습니다.

$xml = <<< EOT 
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 
<userlist> 
    <users> 
    <user> 
     <id>1</id> 
     <name>Bob</name> 
    </user> 
    <user> 
     <id>2</id> 
     <name>David</name> 
    </user> 
    </users> 
</userlist> 
EOT; 

$x_obj = simplexml_load_string($xml); 
  • SELECT * FROM users ORDER BY id ASC

    $result = $x_obj->xpath('//user'); 
    
    function cmp($a, $b) 
    { 
        if ($a->id > $b->id) return -1; 
        if ($a->id < $b->id) return 1; 
        return 0; 
    } 
    usort($result, cmp); 
    
  • SELECT * FROM users WHERE id=2

    이 XML과 PHP를 감안할 때

    SELECT id FROM users WHERE name='Bob'

    $result = $x_obj->xpath('//user[name="Bob"]/id'); 
    

결과

$result = $x_obj->xpath('//user[id=2]/name'); 
  • SELECT name FROM users WHERE id=2

    10
  • 간단한 배열 될 것이다.

    codepad.org에 라이브 (20:10 GMT + 1 : 현재 아래) : http://codepad.org/LSo2YX37

    +0

    끝내. 고마워요! – Tim

    +0

    여러분을 환영합니다! – ComFreek

    +0

    안녕하세요, 다시 ComFreek, 어떻게 인쇄 /이 데이터를 반향합니까? – Tim