以下測試功能讀取與PHP的XMLReader的一個XML文件,並返回3個值(「ID」 =鍵)的2維陣列。PHP的XMLReader到陣列
如何,您可以編輯代碼,使用戶名鍵和值數組也返回? (末顯示)
ini_set('always_populate_raw_post_data', 'on');
function test()
{
$request = $HTTP_RAW_POST_DATA;
error_reporting(E_ERROR | E_WARNING | E_PARSE);
$url = "http://site.xml";
$reader = new XMLReader();
$reader->open($url);;
$var = array();
$i = 0;
$limit = 3;
while ($reader->read())
{
if ($reader->name == "id" && $reader->nodeType == XMLReader::ELEMENT)
{
if ($i == $limit) break;
while ($reader->read())
{
if ($reader->nodeType == XMLReader::TEXT
|| $reader->nodeType == XMLReader::CDATA
|| $reader->nodeType == XMLReader::WHITESPACE
|| $reader->nodeType == XMLReader::SIGNIFICANT_WHITESPACE)
{
$var[$i]["id"] = $reader->value;
}
else if ($reader->nodeType == XMLReader::END_ELEMENT && $reader->name == "id")
{
break;
}
}
$i++;
}
}
$reader->close();
echo '<pre>';
print_r($var);
echo '</pre>';
}
測試()返回該數組
Array
(
[0] => Array
(
[id] => 345
)
[1] => Array
(
[id] => 123
)
[2] => Array
(
[id] => 789
)
)
你怎麼還可以獲得用戶名鍵和值?
Array
(
[0] => Array
(
[id] => 345
[username] => name1
)
[1] => Array
(
[id] => 123
[username] => name2
)
[2] => Array
(
[id] => 789
[username] => name3
)
)
添加到聖何塞的回答
// needed to end element
else if ($reader->nodeType == XMLReader::END_ELEMENT && $reader->name == "username")
{
break;
}
如何編寫while循環有什麼建議? – rrrfusco 2010-12-03 19:35:56
是的,在增加i之前做另一個if語句。搜索用戶名,就像搜索ID一樣。我以前從來沒有使用過XML讀取器類(通常使用DOM),所以我不能說你是否正在做一些標準的事情,但這似乎是一個簡單的方法來完成它。 – Jack 2010-12-03 19:38:44