我有以下XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<person>
<id>1</id>
<name>Jane</name>
<surname>Smith</surname>
</person>
<person>
<id>2</id>
<name>John</name>
<surname>Doe</surname>
</person>
</root>
我有以下CSV文件:
id;phone
1;12345678
2;78903456
我使用PHP。我需要使用这样的XML: 将电话号码元素添加到ID为的人... 例如:将值为12345678的phone元素添加到id为1的person元素。
答案 0 :(得分:1)
使用SimpleXML,您可以使用addChild()方法。
$file = 'xml/config.xml';
$xml = simplexml_load_file($file);
$galleries = $xml->galleries;
$gallery = $galleries->addChild('gallery');
$gallery->addChild('name', 'a gallery');
$gallery->addChild('filepath', 'path/to/gallery');
$gallery->addChild('thumb', 'mythumb.jpg');
$xml->asXML($file);
请注意,SimpleXML不会格式化#34;适合您的XML,但是从未格式化的SimpleXML表示到整齐缩进的XML并不是一个复杂的步骤,这里有很多问题。
答案 1 :(得分:1)
由于XML的内容会有所不同,因此XPath可能更容易找到您要更新的条目...
$telephoneList = [["id"=> 1, "phone" => "12345678"],
["id"=> 2, "phone" => "78903456"]];
$xml = simplexml_load_file("a.xml");
foreach ( $telephoneList as $telephone) {
$person = $xml->xpath("//person[id={$telephone['id']}]");
if ( count($person) == 1 ) {
$person[0]->addChild("phone", $telephone['phone']);
}
}
echo $xml->asXML();
这会尝试使用csv中的值<person>
找到<id>
元素。如果找到,则会使用addChild()
只是在CSV文件中读取并按上述方式处理它。
答案 2 :(得分:0)
您可以从SimpleXMLElement循环$xml->children()
,然后检查是否(string)$a->id === "1"
。然后使用addChild将值phone
的{{1}}元素添加到person元素。
12345678