私はPHPで解析する必要がある非常に大きなファイルを持っているので、xmlReaderを使用しています。私は、XMLで遊んといくつかの問題を抱えています始めました....私は読むために、次の機能を使用しようとしていますxmlReader in PHP-正しく動作させるための問題
ここXMLが構成されている方法です...
<?xml version="1.0" encoding="utf-8"?>
<devices>
<os name="os1">
<device user_agent="uaValue1">
<device_name>name1</device_name>
<device_os>osValue1</device_os>
</device>
<device user_agent="uaValue2">
<device_name>name2</device_name>
<device_os>osValue2</device_os>
</device>
</os>
<os name="os2">
<device user_agent="uaValue3">
<device_name>name3</device_name>
<device_os>osValue5</device_os>
</device>
<device user_agent="uaValue4">
<device_name>name4</device_name>
<device_os>osValue4</device_os>
</device>
</os>
<manufacturer name="mf1">
<device user_agent="uaValue5">
<device_name>name5</device_name>
<device_os>osValue5</device_os>
</device>
<device user_agent="uaValue6">
<device_name>name6</device_name>
<device_os>osValue6</device_os>
</device>
</manufacturer>
<manufacturer name="mf2">
<device user_agent="uaValue7">
<device_name>name7</device_name>
<device_os>osValue7</device_os>
</device>
<device user_agent="uaValue8">
<device_name>name8</device_name>
<device_os>osValue8</device_os>
</device>
</manufacturer>
</devices>
xml($ findbyはosまたはmanufacturerを渡します。/ $ atr_valueは$ findby値の属性名/ $ ua_strはユーザエージェントです)。ここにあるいくつかの値をエコーすることにより
function get_data($findby,$atr_value,$ua_str) {
$data['device_name'] = '';
$data['device_os'] = '';
$xml = new XMLReader;
$xml->open('devices.xml');
while($xml->read()) {
if ($xml->name == $findby) {
if ($xml->getAttribute('name') == $atr_value) {
while($xml->read()) {
if ($xml->name == "device") {
if ($xml->getAttribute('user_agent') == $ua_str) {
while($xml->read()) {
if ($xml->name == "device_name") {
$data['device_name'] = $xml->value;
}
if ($xml->name == "device_os") {
$data['device_os'] = $xml->value;
}
}
}
}
}
}
}
}
$xml->close();
return $data;
}
、ダウンし、ユーザエージェントにデータを引っ張っているようだが、デバイス名またはdevice_osを取得することはできません。
明らかに、これは機能しません。私は、XMLがそのような方法で構造化できないことが問題であり、簡単な修正であると考えていました。しかし、以前のバージョンではデータを取得しましたが、間違ったユーザーエージェントからのものでした。だから、私はそれがxmlReaderでデータを引き出す方法で何かだと思っています。
これはなぜ動作しないのですか?ありがとうございました...
おかげで...私は属性として望んでいた要素を追加し、データを取得するので、同じようにそれを呼び出すことになりました – user1366187