Можно ли изменить переменную xml только по имени тега с помощью simplexml в php - PullRequest
1 голос
/ 06 января 2012

Я знаю, что могу установить такую ​​переменную $xml->path->to->tag = $newValue.Но что, если у меня есть только имя тега и я не знаю его пути, мне интересно, как я могу установить его переменную?это возможно?

1 Ответ

1 голос
/ 06 января 2012

Вы ищете

XPath для поиска элемента в любом месте документа XML - //elementName

Пример XML:

<foo>
    <bar>
        <baz bam="boom">baddam</baz>
    </bar>
</foo>

Пример PHP-кода:

$foo = simplexml_load_string($xml);
$allBazElements = $foo->xpath('//baz');
echo
    $allBazElements[0],        // baddam
    $allBazElements[0]['bam'], // boom
    PHP_EOL;

$allBazElements[0][0] = 'changed';
$allBazElements[0]['bam'] = 'changed too';

echo $foo->asXml();

выведет ( демо )

baddamboom
<?xml version="1.0"?>
<foo>
    <bar>
        <baz bam="changed too">changed</baz>
    </bar>
</foo>
...