2012-02-20 4 views
0

저는 개인적으로는 비교적 큰 XML 파일을 처리해야하는 재귀 PHP 함수를 작성하고 있습니다. 2-3 노드의 가치 만 필요하기 때문에 가능한 한 메모리 및 트래픽을 절약 할 수있는 방법을 모색했습니다. 그래서 예상대로 작동하지 않으며 PHP.net에서 잘 문서화되지 않은 PHP Object XMLReader를 발견했습니다. 나의 현재 코드는 다음XMLReader를 사용하여 XML 파일을 올바르게 처리하기

<?php 
    $reader = new XMLReader(); 
    $reader->open('http://path.to.xml/file', 'UTF-8'); 
    $att1 = $reader->getAttribute('att1'); 
    $att2 = $reader->getAttribute('att2'); 
    $reader->close(); 
    echo var_dump($att1) . ' ' . var_dump($att2); 
?> 

이 순수 디버그입니다 볼 수 있지만, 그냥 문서에 따르면, 사건은 "입니다, 두 번, 밖으로 메아리 NULL로하면 주어진 가지는 속성 없습니다 이름이 발견되거나 [...] 요소 노드에 위치합니다. "

XML 구조는 (실제 파일보다 더 큰 500 개 라인이지만, 때로는 CDATA 태그가 포함) :

<parentnode> 
    <att1><![CDATA[ VAL1 ]]></att1> 
    <randomtags>randomval</randomtags> 
    <att2>VAL2</att2> 
    <foo>bar</foo> 
</parentnode> 

나는 XML과 거의 경험이 이전에는 SimpleXML을 사용 - 한 번. 전체 파일을 파싱하고 싶지는 않습니다.이 두 값만 분석합니다. 나는 이미 시도 무엇

:

  • 이 <에 대해 getAttribute 매개 변수를 encapsing과>
  • 정적으로 대해 getAttribute 방법
  • 여러 가지 방법으로 부모 노드를 포함하도록 getAttribute를 매개 변수 변경을 호출

팁이나 힌트를 환영합니다. :)

답변

2

당신은

$att1 = $reader->getAttribute('att1'); 

하지만 XML 정의, att1 및 ATT2에

있는 요소를 사용하지

+1

아야 속성. 그것은 당황스럽고 XML 지식이 부족하다는 것을 증명합니다. :/지적 해 주셔서 고마워요, 지금부터는 어려운 길이 아니어야합니다. ^^ –

+0

겸손에 대한 귀하의 의견에 +1. 당혹스럽지 마라! –

관련 문제