0
對於個人用途,我目前正在編寫一個遞歸PHP函數,該函數應處理大量相對較大的XML文件。由於我只需要2-3個節點的值,因此我尋找了一種方法來儘可能節省內存和流量。所以我偶然發現了PHP Object XMLReader,它並不像預期的那樣工作,在PHP.net上沒有很好的記錄。 我當前的代碼如下:使用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 - 一次。我不想解析整個文件,只是這兩個值。
我已經嘗試過:
- encapsing getAttribute方法參數<和>
- 靜態調用的getAttribute方法
- 改變的getAttribute參數包括以多種方式父節點
歡迎任何提示或提示。 :)
哎喲。這是一種尷尬,並證明我缺乏XML知識。 :/感謝您指出這一點,從現在開始不應該是一個困難的方式。 ^^ – 2012-02-20 16:57:09
+1對你謙卑的評論。不要尷尬! – 2012-02-20 17:23:16