Simplexml не добавит дочерние элементы или атрибуты в XML - PullRequest
2 голосов
/ 16 августа 2011

Мой xml (hashes.xml) -

<?xml version="1.0" encoding="UTF-8" ?>
<root>
    <updated></updated>
    <players>
        <playernum>1</playernum>
        <!--Demonstration of syntax, using the value 127.0.0.1 and the first second of December 22, 2012 with salt of 000 -->
        <player id="7bea7450391c9d89c65af7a46966e45066105fa4">
            <game id="1">
                <color>red</color>
            </game>
            <game id="2">
                <color>purple</color>
            </game>
        </player>
    </players>
</root>

А мой php -

<?php

$hash = $_GET["hash"];

$xml = simplexml_load_file("hashes.xml");
$xml->players->addChild("player", " ");

?>

Но когда я запускаю php, он не вносит изменений в xml-файл.Я открыт для использования любого метода, даже если это не симплекс.

1 Ответ

0 голосов
/ 16 августа 2011

У вас уже есть player ребенок в вашем players.Я думаю, вам нужно другое имя для players parent $xml->players->addChild("player2", " ");

Редактировать: когда я проверял код, я увидел, что я ошибался

это на самом деле работает

$xml = '<?xml version="1.0" encoding="UTF-8" ?>
<root>
    <updated></updated>
    <players>
        <playernum>1</playernum>
        <!--Demonstration of syntax, using the value 127.0.0.1 and the first second of December 22, 2012 with salt of 000 -->
        <player id="7bea7450391c9d89c65af7a46966e45066105fa4">
            <game id="1">
                <color>red</color>
            </game>
            <game id="2">
                <color>purple</color>
            </game>
        </player>
    </players>
</root>';


$xml = simplexml_load_string($xml);
$newPlayer = $xml->players->addChild("player", " ");
$newPlayer->addAttribute("id", "12313123123");
$newGame = $newPlayer->addChild("game", "");
$newGame->addAttribute("id", "1");
$newColor = $newGame->addChild("color", "blue");
echo $xml->asXML();

результат:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <updated/> 
    <players> 
        <playernum>1</playernum> 
        <!--Demonstration of syntax, using the value 127.0.0.1 and the first second of December 22, 2012 with salt of 000 --> 
        <player id="7bea7450391c9d89c65af7a46966e45066105fa4"> 
            <game id="1"> 
                <color>red</color> 
            </game> 
            <game id="2"> 
                <color>purple</color> 
            </game> 
        </player> 
        <player id="12313123123">
            <game id="1">
                <color>blue</color>
            </game>
        </player>
    </players> 
</root> 
...