2013-04-06 1 views
0

XML 파일을 검색하고 주어진 기준과 일치하는 레코드의 모든 데이터를 반환하려고합니다. 여기에 제가 지금 가지고있는 것과 비슷한 것이 있습니다. 그러나 그것은 똑같은 기록 안에서 다른 속성의 가치를 얻는 방법을 알아낼 수 없습니다. 여기 DOMXPath 쿼리 결과에서 속성 값을 가져 오는 중입니까?

는 사용되는 XML 파일의 샘플입니다

<routing> 
    <route> 
     <url>/homepage</url> 
     <file>/pages/home.php</file> 
    </route> 
</routing> 

그리고 여기가 문서 내의 특정 레코드 또는 레코드를 찾는거야 방법이다. 그것들을 완벽하게 찾았지만 어떻게 일치 된 레코드에서 데이터를 얻을 수 있습니까?

$qExp = '//route[url="/homepage"]'; 
    foreach($inst->query($qExp) as $key=>$node) { 
     print_r($node); 
     // echo $node->file->nodeValue; 
     // how would I do this? I can't seem to 
     // access specific attributes at all 
     // inside of the DOMXPath class 
    } 

DOMXPath 객체는 $node에 저장됩니다,하지만 어떻게 내가 다른 속성 값을 얻기 위해 DOMXPath 객체를 사용할 수 있습니까? 예를 들어 첫 번째 XML 레코드는이 쿼리에서 반환되지만, 구체적으로 file 특성의 값을 얻는 방법은 무엇입니까? 사용할 수있는 nodeValue 함수가 있지만 모든 필드의 값을 함께 반환하며 어떤 부분이 어떤 필드에 속하는지 정렬 할 수는 없습니다.

미리 도움 주셔서 감사 드리며, 실제로 저를 괴롭 히고 있습니다.

멋지고 간단한 솔루션에 대한
+0

http://codepad.viper-7.com/ZRrUPl @ 라이브 데모를 참조하면 의아해있어 어쩌면 당신은 조건을 혼합하기 때문에? 'file'은 속성이 아니라 엘리먼트입니다. 일반적으로 [PHP에서 DOMElement의 특정 자식 태그 가져 오기]에서 설명한대로 액세스합니다 (http://stackoverflow.com/questions/3816806/get-a-specific-child-tag-from-a-domelement-in- PHP). 또한'$ node-> file-> nodeValue'는 두 가지 종류의 순회가 혼합 된 것입니다 : 첫 번째 SimpleXML, DOM. – hakre

+0

또 다른 약간의 잘못은'$ node'가'DOMXPath'가 될 것이지만 그것은 DOMNode입니다. – hakre

답변

-1

simplexml 사용

$xml = simplexml_load_string($x); // assuming XML in $x 
$result = $xml->xpath("//route[url='/homepage']"); 

// loop 
foreach ($result as $r) echo $r->file,"<br />"; 

// direct access 
echo $result[0]->file,"<br />"; 

+0

안녕하세요 ?? 왜 아래로 투표 ?? Pls 설명! – michi

관련 문제