2012-12-20 4 views
2

PHP로 읽은 XML에 대한 경험이 없기 때문에 몇 가지 조사를 해보았습니다. 자습서를 읽었지만 한 가지 확실한 점이 있습니다. 지금은했습니다PHP에서 xml 데이터를 구문 분석

$open = simplexml_load_file('file.xml'); 
echo $open ->location[0]->temp; 

:

<location code="TB0023"> 
    <temp unit="F">15.8</temp> 
    <US>Intermittent clouds</US> 
    </location> 

    <location code="YG0023"> 
    <temp unit="F">23</temp> 
    <US>Mostly Clear</US> 
    </location> 

그래서 위치 코드 = "TB0023"에 예를 온도에 대한 접근 방법이 있습니다 : 는 지금은 다음이 XML 코드 (file.xml)가

$open = simplexml_load_file('file.xml'); 
echo $open ->location[code="TB0023"]->temp; 

그래서 그 사양에서 데이터를 retreive 해당 식별자 TB0023를 사용할 수있는 방법이있다 : 실패는 좀 더 읽기 (연관 배열처럼 어떻게 든) 이런 일을 수행하여 만들려고 노력 ific 위치, 인덱스를 사용하지 않고 0 1 2 3 ...

고맙습니다.

+2

XPath에서 자세한 내용을 찾을 수 있습니다; 문법은 당신이 작성한 것과 거의 비슷합니다. – Evert

+0

감사합니다. 내가 실제로 가지고있는 방식대로 작동하게 할 수있는 가능성은? – inrob

답변

1

SimpleXML 프레임 워크는 SimpleXMLElement 클래스를 포함합니다.

SimpleXMLElement'spath() 방법은 Xpath expressions으로 표시되며 here으로 지정하십시오.

php.net 사이트

$string = <<<XML 
<a> 
<b> 
    <c>text</c> 
    <c>stuff</c> 
</b> 
<d> 
    <c>code</c> 
</d> 
</a> 
XML; 

$xml = new SimpleXMLElement($string); 

/* Search for <a><b><c> */ 
$result = $xml->xpath('/a/b/c'); 

while(list(, $node) = each($result)) { 
    echo '/a/b/c: ',$node,"\n"; 
} 

/* Relative paths also work... */ 
$result = $xml->xpath('b/c'); 

while(list(, $node) = each($result)) { 
    echo 'b/c: ',$node,"\n"; 
} 

에서이 코드는이 인쇄됩니다 :

/a/b/c: text 
/a/b/c: stuff 
b/c: text 
b/c: stuff 

XPath는 XML에서 요소를 찾을 수있는 표준 기술이다.

귀하의 경우에는,이 같은 XPath 쿼리을 사용하십시오 :

/location[@code="TB0023"]/temp 
1

당신은 XML의 값을 쿼리하는 XPath를 사용하려고합니다.

$result = $open->xpath("//location[@code='TB0023']")

당신은 PHP 문서 당신은 XPath를 사용할 필요가