Это сводит меня с ума. Я мог бы скопировать и вставить 2 значения, которые мне нужны, и были сделаны с этим 30 минут назад, но вместо этого я пытаюсь сделать это «правильно».Simplexml PHP - получить значение «глубокого узла»
Во всем файле есть только одно имя пользователя. Как мне это получить? Я пробовал использовать xpath ($username=$xml->xpath('default_setup/connection/username');
), и я попытался связать узлы с ним ($ username = $ xml -> {... полный путь здесь ...} -> default_setup-> connection-> имя_пользователя; `).
Когда я print_r($xml)
, я вижу все узлы, которые я хочу, и их значения. Когда я print_r($username)
, я ничего не получаю.
<?php
$xml = simplexml_load_file('database.xml',NULL,LIBXML_NOCDATA); // connection details are inside of CDATA
$username=$xml->xpath('default_setup/connection/username'); ?>
<p>Username: <?= (string)$username ?></p><?php // outputs "Array"
<?php
foreach($xml as $element) {
echo $element . '<br />'; // outputs '<br />' 2 times.
}
?>
<pre>
Username:
<?php print_r($username) ?><?php // nothing ?>
xml:
<?php print_r($xml) ?><?php // full set of all nodes with everything I need just out of reach ?>
</pre>
Вот образец xml. (Это на самом деле Magento «и т.д./приложение/local.xml» файл)
<default_setup>
<connection>
<host><![CDATA[localhost]]></host>
<username><![CDATA[secret_username]]></username>
<password><![CDATA[secret_password]]></password>
<dbname><![CDATA[testing_database]]></dbname>
<initStatements><![CDATA[SET NAMES utf8]]></initStatements>
<model><![CDATA[mysql4]]></model>
<type><![CDATA[pdo_mysql]]></type>
<pdoType><![CDATA[]]></pdoType>
<active>1</active>
</connection>
</default_setup>
у вас есть пример XML по этому конкретному вопросу? чтобы мы знали, как это выглядит? – Ghost
@Ghost ok Я добавил последнюю часть пути. ('Default_setup/подключение/имя пользователя'). –