PHP XML -将XML节点属性转换为一个节点


PHP XML - Convert XML node attribute to just a node

我想写一个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中这样做吗?请记住,该文件将包含超过1000个独立的产品。

你可以这样做。

$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>