SimpleXML и PHP (XPATH) - PullRequest
       2

SimpleXML и PHP (XPATH)

0 голосов
/ 14 декабря 2011

Хорошо, ребята, я использую XML для хранения информации о странице для динамического веб-сайта.Мне нужно найти способ взять переменную (имя файла) и вытащить связанный узел и проанализировать эту информацию.так что в основном вот моя структура XML ...

<SITE>

<PAGE>
<FILENAME>sub.php</FILENAME>
<DESCRIPTION>this is an example sub page</DESCRIPTION>
<TITLE>NOH Sub page</TITLE>
<PARENTS>
 <PARENT>What is NOH</PARENT>
</PARENTS>
</PAGE>

<PAGE>
<FILENAME>about.php</FILENAME>
<DESCRIPTION>description description description </DESCRIPTION>
<TITLE>About Us</TITLE>
<PARENTS>
 <PARENT>Company</PARENT>
 <PARENT>People</PARENT>
</PARENTS>
</PAGE>

</SITE>

Есть ли способ использовать SimpleXML и PHP, чтобы взять переменную, скажем .. 'sub.php' и сказать, что я хочу узел, где filename = 'sub.php ', а затем сможете проанализировать этот узел (страницу) на предмет необходимой информации.Спасибо!

Обновление, где я запутался ... У меня есть эта функция

function getPage($pagePath){

$file = "includes/sitestructure.xml";
$xml = simplexml_load_file($file);  
return print_r($xml-xpath(PAGE/FILENAME));  
}

, но мой xpath не работает, и я не уверен, как логически получитьинформация, которая мне нужна ... Я знаю, как обычно анализировать XML с помощью PHP, но не знаю, как указать конкретный узел, сравнивая его с переменной, а затем анализируя его.

1 Ответ

3 голосов
/ 14 декабря 2011
$xml-xpath(PAGE/FILENAME)

Это нарушается несколькими способами, но это вопрос XPath, а не синтаксис PHP.


Вы хотите получить элементы PAGE, которые содержат FILENAME выбранного вами имени файла. Для этого в XPath можно использовать предикат .

PAGE[FILENAME="sub.php"]

В вашем PHP-коде это может выглядеть как

$pages = $xml->xpath('PAGE[FILENAME="sub.php"]');
$first_page = $pages[0];
echo $first_page->TITLE; // NOH Sub page

Важным моментом здесь является использование предиката для фильтрации результата только по требуемым элементам страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...