XML 파일의 특정 부분을 추출하는 데 문제가 있습니다. 중복 노드가있는 문서에서 XMLReader 및 xmlreader-iterators.php와 함께 XPath 사용
이 예제 XML을 가지고 :이 큰 문서를 탐색하고 '측정'라는 이름 만 노드를 읽어 PHP의 XMLReader ( https://gist.github.com/hakre/5147685)에 대한 반복자를 사용하고<toplevel>
<profile>
<technology type="java" />
<technology type="dotnet" />
<technology type="sdk" />
<technology type="webserver" />
<license interactive="false" />
<groups></groups>
<sensors></sensors>
<measures>
<measure id="example-name1" userdefined="true"></measure>
<measure id="example-name2" userdefined="false"></measure>
</measures>
<transaction>
<value>
<measure id="example-name3" userdefined="true"></measure>
</value>
</transaction>
</profile>
</toplevel>
. 불행히도 문서에 두 번째 섹션에는 '측정 값'이 포함되어 있습니다. 그 위에 사용자 정의 및 비 사용자 정의 측정 값이 있으며 'userdefined = "true"'측정 만 원합니다.
내 코드는 지금까지 있습니다 :
require('xmlreader-iterators.php');
$xmlFile = "../xml/measures.xml";
$readerMeasures = new XMLReader();
$readerMeasures->open($xmlFile);
$dataMeasures = array();
$measures = new XMLElementIterator($readerMeasures, 'measure');
foreach ($measures as $measure) {
$item = $measure->getAttribute('id');
array_push($dataMeasures, $item);
}
누군가가 나에게 '조치'섹션 내에서 정의 된 사용자를 단지 조치를 내 결과를 좁힐하는 방법을 이해하는 데 도움시겠습니까? XPath로이 작업을 수행 할 수 있습니까?
감사합니다.
편집 : 사용자 정의 부분을 정리 한
:
foreach ($measures as $measure) {
$userdefined = $measure->getAttribute('userdefined');
$measure_name = $measure->getAttribute('id');
if ($userdefined=="true") {
echo "$measure_name<br>";
$count++;
}
}
을하지만 난 그냥 "조치"내에서 조치를 데리러 반복자를 좁힐 수 없었다 섹션 . 여전히 "transactions"섹션을보고 있습니다.
감사합니다. –