Условно SimpleXML возможно? - PullRequest
0 голосов
/ 21 июня 2009

Я извлекаю содержимое из файла XML с помощью SimpleXML.

Мне было интересно, возможно ли отобразить определенный узел в зависимости от содержимого узла, например,

<article>
    <title>PHP</title>
    <content>yada yada yada</content>
</article>

<article>
    <title>JAVASCRIPT</title>
    <content>yodo yodo yodo</content>
</article>

Может ли SimpleXML найти конкретный заголовок, а затем отобразить статью для этого заголовка?

Показать статью с названием «PHP».

Я действительно надеюсь, что это возможно.

Спасибо всем, кто отвечает.

Ответы [ 3 ]

6 голосов
/ 21 июня 2009

Вы можете использовать выражение XPath, например //article[title='PHP']/content

3 голосов
/ 21 июня 2009

См. PHP DevCenter , вот пример:

$article_list = new SimpleXMLElement($article_xml);  
foreach ($article_list->xpath("//article[title='PHP']/content") as $content) { 
    print "$content\n";
}

Также, если вы знаете точное местоположение узлов статьи, лучше избегать записи //, которая будет искать на всех уровнях XML.

3 голосов
/ 21 июня 2009
$article_list = new SimpleXMLElement($article_xml);
foreach($article_list->article as $i => $article) {
    if('PHP' == $article->title) {
        //code to display article.
    }
}

Предполагается, что теги статьи находятся в родительском элементе.

...