添加整个 xml 个子新元素 Php
Add whole xml child new element Php
我有这个包含许多子节点的 XML 文件,我有这个 PHP 代码,但这只是添加了第一个节点。我想在 name is node child.
中添加整个 XML
当前 XML:
<root>
<result>
<node>
<someting>asdasd</something>
</node>
<node>
<someting>asdasd</something>
</node>
</result>
<error/>
</root>
我需要的:
<root>
<result>
<node>
<someting>asdasd</something>
<Shipping_Cost>9</Shipping_Cost>
</node>
<node>
<someting>asdasd</something>
<Shipping_Cost>9</Shipping_Cost>
</node>
</result>
<error/>
</root>
当前PHP代码:
function fn_add_shipping($xmlFileToLoad, $destination)
{
$xmlFileToLoad = 'shipping.xml';
$dom = new DOMDocument();
$dom->load($xmlFileToLoad);
$shipping = $dom->getElementsByTagName('node')->item(0);
$ship = $dom->createElement('Shipping_Cost', '9');
$shipping->appendChild($ship);
$dom->save($destination);
return $destination;
}
抱歉,我误解了你的问题。我没有意识到第二个 XML 文件是你想要通过 PHP 方法得到的。既然我看到了,我想我明白你的问题出在哪里了。您只调用一次追加函数。您需要遍历每个节点,每次在将结果输出到目标 XML 文件之前调用追加。
也许是这样的:
function fn_add_shipping($xmlFileToLoad, $destination)
{
$xmlFileToLoad = 'shipping.xml';
$dom = new DOMDocument();
$dom->load($xmlFileToLoad);
$shipping = $dom->getElementsByTagName('node');
for ($x=0; $x<$shipping->length; $x++)
{
$ship = $dom->createElement('Shipping_Cost', '9');
$shipping[$x]->appendChild($ship);
}
$dom->save($destination);
return $destination;
}
我有这个包含许多子节点的 XML 文件,我有这个 PHP 代码,但这只是添加了第一个节点。我想在 name is node child.
中添加整个 XML当前 XML:
<root>
<result>
<node>
<someting>asdasd</something>
</node>
<node>
<someting>asdasd</something>
</node>
</result>
<error/>
</root>
我需要的:
<root>
<result>
<node>
<someting>asdasd</something>
<Shipping_Cost>9</Shipping_Cost>
</node>
<node>
<someting>asdasd</something>
<Shipping_Cost>9</Shipping_Cost>
</node>
</result>
<error/>
</root>
当前PHP代码:
function fn_add_shipping($xmlFileToLoad, $destination)
{
$xmlFileToLoad = 'shipping.xml';
$dom = new DOMDocument();
$dom->load($xmlFileToLoad);
$shipping = $dom->getElementsByTagName('node')->item(0);
$ship = $dom->createElement('Shipping_Cost', '9');
$shipping->appendChild($ship);
$dom->save($destination);
return $destination;
}
抱歉,我误解了你的问题。我没有意识到第二个 XML 文件是你想要通过 PHP 方法得到的。既然我看到了,我想我明白你的问题出在哪里了。您只调用一次追加函数。您需要遍历每个节点,每次在将结果输出到目标 XML 文件之前调用追加。
也许是这样的:
function fn_add_shipping($xmlFileToLoad, $destination)
{
$xmlFileToLoad = 'shipping.xml';
$dom = new DOMDocument();
$dom->load($xmlFileToLoad);
$shipping = $dom->getElementsByTagName('node');
for ($x=0; $x<$shipping->length; $x++)
{
$ship = $dom->createElement('Shipping_Cost', '9');
$shipping[$x]->appendChild($ship);
}
$dom->save($destination);
return $destination;
}