在PHP中将节点添加到XML

时间:2018-08-29 11:42:23

标签: php xml dom

我正在尝试将节点添加到xml文件中。
我想像这样在'Self'之后添加新节点

<NewNode>UN9TD72U</NewNode>  

这是我的xml文件的样子

<?xml version="1.0"?>
<GetProductCategories>
<GetProduct>
<Self>
<ProductCategoryId>1282779353</ProductCategoryId>
<ProductCategoryName>Shirt</ProductCategoryName>
<Parent>
<ProductCategoryId>8363437382</ProductCategoryId>
<ProductCategoryName>Sports tshirt</ProductCategoryName>
</Parent>
</Self>
</GetProduct>
</GetProductCategories> 

我的代码是:

$xml = simplexml_load_file("data.xml");
$child = $xml->addChild("NewNode");
$child->addAttribute("text","UN9TD72U");
$xml->asXML("data.xml");

输出,我得到的是

<?xml version="1.0"?>
<GetProductCategories>
<GetProduct>
<Self>
<ProductCategoryId>1282779353</ProductCategoryId>
<ProductCategoryName>Shirt</ProductCategoryName>
<Parent>
<ProductCategoryId>8363437382</ProductCategoryId>
<ProductCategoryName>Sports tshirt</ProductCategoryName>
</Parent>
</Self>
</GetProduct>
<NewNode text="UN9TD72U"/>
</GetProductCategories>

2 个答案:

答案 0 :(得分:1)

Pool.map()

答案 1 :(得分:0)

addChild()接受value的第二个参数,因此您可以编写:

$child = $xml->addChild("NewNode", "UN9TD72U");

关于将其添加到<Self>(我想这就是您想要的?)中,您可以使用children()进入模型中的每个对象:

http://php.net/manual/en/simplexmlelement.children.php

编辑:如Iainn的评论所指出的(我忘记了此方法),您还可以直接访问子元素,例如$xml->GetProduct->Self->addChild()


总而言之:

$xml = simplexml_load_file("data.xml");
$xml->GetProduct->Self->addChild("NewNode", "UN9TD72U");
$xml->asXML("data.xml");