Я создал класс, который считывает значение и имя узла и объединяет его в массив, чтобы использовать его в качестве простого и быстрого доступа к конфигурации в XML. Но это решение работает, только если плохо дать нижний узел, XML выглядит так.Получить последний узел в XML, используя DOMDocument PhP
<?xml version="1.0" encoding="ISO-8859-2"?>
<settings>
<const>
<inscript>true</inscript>
<title>Template</title>
</const>
<meta>
</meta>
<db>
<user>user</user>
<pass>pass</pass>
<host>host</host>
<name>name</name>
</db>
<path>
<style>
<css>/Template/view/www/style/</css>
<img>/Template/view/www/style/img</img>
</style>
</path>
</settings>
Теперь я хочу, чтобы получить, например, весь дб узел и возвращает его в виде массива, где имя узла пустошь быть ключ и значение узла, значение. но я застрял в этом. Вот что я сделал до сих пор.
class config {
private static $xml = "lib/config/settings.xml";
private static $xmlRoot = "settings";
public static function loadConfig($value) {
$domDocument = new DOMDocument();
$domDocument->load(self::$xml);
$settings = $domDocument->getElementsByTagName(self::$xmlRoot);
try {
foreach ($settings as $setting) {
$configValue = $setting->getElementsByTagName($value)->item(0)->nodeValue;
$configNode = $setting->getElementsByTagName($value)->item(0)->nodeName;
$test = $setting->getElementsByTagName("path")->item(0)->childNodes->item(2)->nodeName;
var_dump($test);
}
$configValue = explode(' ', trim(preg_replace('/\s+/', ' ', $configValue)));
$configNode = explode(' ', trim(preg_replace('/\s+/', ' ', $configNode)));
$configArray = array_combine($configNode, $configValue);
return $configArray;
}
catch(Exception $e) {
echo '<h1>Błąd - '.$e->getMessage().'</h1>';
}
}
}
Хотя в большинстве случаев я предпочитаю 'расширение DOM', кажется, что [SimpleXML] (HTTP: // WWW. php.net/manual/en/book.simplexml.php) лучше подходит для этой цели. Вам не нужно самостоятельно анализировать данные узла в массиве. Взгляните на руководство и примеры ... – hek2mgl
Почему вы делаете 'foreach' на корневом элементе? Есть только один корневой элемент. –
Я хотел попробовать DOMDocument для php, просто чтобы узнать его. И foreach итерации на всех узлах в корне, я думаю. –