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_NAME 또는 device_os을받지 않습니다.
분명히 작동하지 않습니다. 나는 XML이 문제가 될 수있는 쉬운 방법으로 구조화 될 수 없다고 생각하고 있었다. 그러나 이전 버전 중 하나에서 데이터를 가져 왔지만 잘못된 사용자 에이전트에서 가져 왔습니다. 그래서 나는 그것이 xmlReader로 데이터를 가져 오려고하는 방법에 있다고 생각합니다.
아무도 왜 이것이 작동하지 않는지에 대한 생각이 있습니까? 감사합니다 ...
감사합니다 – user1366187