Я создаю некоторые серверные функции для приложения, которое я создаю.Не удается добавить дочерний элемент дочернего элемента в элемент XML
У меня есть код кода, который вызывает у меня беспокойство.
Предполагается добавить детей в дочерний элемент элемента в документе XML. Вместо этого он заменяет весь файл с новой информацией, и я не могу понять, почему:/
PHP:
function addRole($pid, $id, $name){
echo $pid;
$xml = self::getXml();
foreach($xml->children() as $project){
if($project->id == $pid){
echo self::toJSON($project->roles);
$roles = $project->roles->children();
echo self::toJSON($roles);
$role = $roles->addchild("role");
$role->addChild("id", $id);
$role->addChild("name", $name);
echo self::toJSON($role);
$role->asXml("../data/projects.xml");
}
}
}
файл XML должен выглядеть следующим образом (это пример фактического XML из projects.xml
):
<projects>
<project>
<id>adultScotland</id>
<name>Adults(Scotland)</name>
<roles>
<role>
<id>projectM</id>
<name>Project Manager</name>
</role>
</roles>
<courses>
<course>Administration of Medication</course>
<course>Infection Control</course>
<course>Introducing Positive Approaches to Behaviour</course>
</courses>
</project>
</projects>
Может ли кто-нибудь увидеть, что я сделал не так?
Если кто-нибудь хочет, чтобы посмотреть на него, getXML() заключается в следующем:
function getXml(){
$xml=simplexml_load_file("../data/projects.xml") or die("ERROR: Unable to read file");
return $xml;
}
заранее спасибо за любую помощь :)
Вы перезаписать исходный файл с 'role' узла,' $ ролевые> asXml («../ data/projects.xml»); 'вместо документа. –
... вместо '$ xml-> asXML (...)' – michi
@michi, который должен быть _after_ циклом foreach. (На всякий случай они ожидают, что только c + p, что на месте.) –