我想编写一个PHP脚本来修改我的XML文件。
我将我的productId作为属性放在节点中,我想解析整个文件并将其转换为单独的节点。所以我想读取节点的属性并将该属性放在自己的节点中。但其余节点将保持不变。
在:
<product id="123">
<name>bob</name>
<lastname>tim</lastname>
</product>
要:
<product>
<id>123</id>
<name>bob</name>
<lastname>tim</lastname>
</product>
我可以在PHP中执行此操作吗?请记住,该文件中将包含超过一千种单独的产品。
答案 0 :(得分:1)
你可以这样做。
$xml = new SimpleXMLElement('<product id="123"></product>');
if(!empty($xml['id'])) {
$xml->addChild('id', $xml['id']);
unset($xml['id']);
}
echo $xml->asXML();
输出:
<?xml version="1.0"?>
<product><id>123</id></product>
这是手册的链接和addchild功能链接。 http://php.net/manual/en/class.simplexmlelement.php
http://php.net/manual/en/simplexmlelement.addchild.php
更新
如果您有多个产品,可以像这样循环。
$xml = new SimpleXMLElement('<proudcts><product id="123"></product><product id="234"></product></proudcts>');
foreach($xml as $key => $data){
if(!empty($data['id'])) {
$data->addChild('id', $data['id']);
unset($data['id']);
}
}
echo $xml->asXML();
输出:
<?xml version="1.0"?>
<proudcts><product><id>123</id></product><product><id>234</id></product></proudcts>