有条件的SimpleXML可能吗?

时间:2009-06-21 00:43:55

标签: php html xml simplexml

我使用SimpleXML从XML文件中提取内容。

我想知道是否可以根据节点的内容显示某个节点,例如

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

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

SimpleXML可以找到特定的标题,然后显示该标题的文章吗?

显示标题为“PHP”的文章。

我真的希望这是可能的。

感谢任何回复的人。

3 个答案:

答案 0 :(得分:6)

您可以使用类似//article[title='PHP']/content

的XPath表达式

答案 1 :(得分:3)

$article_list = new SimpleXMLElement($article_xml);
foreach($article_list->article as $i => $article) {
    if('PHP' == $article->title) {
        //code to display article.
    }
}

这是假设文章标签位于父元素中。

答案 2 :(得分:3)

请参阅PHP DevCenter,这是一个示例:

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

此外,如果您知道文章节点的确切位置,最好避免使用//符号来搜索XML的所有级别。