用PHP解析复杂xml
我有一个结构如下的xml文件:用PHP解析复杂xml,php,xml,Php,Xml,我有一个结构如下的xml文件: <categories> <category> <id></id> <name></name> </category> ... </categories> <products> <product> <id></id> <name></name> </pro
<categories>
<category>
<id></id>
<name></name>
</category>
...
</categories>
<products>
<product>
<id></id>
<name></name>
</product>
...
</products>
<params>
<param>
<id></id>
<name></name>
</param>
...
</params>
<product_params>
<product_param>
<param_id></param_id>
<product_id></product_id>
</product_param>
...
</product_params>
$xml = simplexml_load_file('file.xml');
$products = $xml->products;
$product_params = $xml->product_params->product_param;
foreach ($products->product as $product) {
echo '<p>'.$product->name.'</p>';
for($i=0; $i < count($product_params) ;$i++) {
if($product->id == $product_params[$i]->product_id) {
}
}
}
...
...
...
...
如何显示产品节点、正确的类别(与id匹配)以及该产品的所有参数
我试过这样做:
<categories>
<category>
<id></id>
<name></name>
</category>
...
</categories>
<products>
<product>
<id></id>
<name></name>
</product>
...
</products>
<params>
<param>
<id></id>
<name></name>
</param>
...
</params>
<product_params>
<product_param>
<param_id></param_id>
<product_id></product_id>
</product_param>
...
</product_params>
$xml = simplexml_load_file('file.xml');
$products = $xml->products;
$product_params = $xml->product_params->product_param;
foreach ($products->product as $product) {
echo '<p>'.$product->name.'</p>';
for($i=0; $i < count($product_params) ;$i++) {
if($product->id == $product_params[$i]->product_id) {
}
}
}
$xml=simplexml\u load\u文件('file.xml');
$products=$xml->products;
$product_params=$xml->product_params->product_param;
foreach($products->product as$product){
回显“”.$product->name.“”;
对于($i=0;$iid==$product\U参数[$i]->product\U id){
}
}
}
文件太大,脚本崩溃。再加上我的“解决方案”,我需要至少多嵌套一个循环。a.1)解析和反规范化结构,以便更容易/更快地搜索可能存在重复数据的循环。a、 2)解析推送到数据库使用数据库进行搜索。b) 尝试使用xpath要求可能会有所帮助,但这取决于文件大小。我们谈论的XML有多大?文件大约有700MB。我会把它推到DB。ID如何匹配?更好的是,你能提供想要的结果吗?我会推到DB。应该快点。谢谢你的帮助。