需要帮助显示xml文件中的数据,使用simplexml xpath和php

时间:2014-01-22 02:17:47

标签: php xml xpath simplexml

大家好,我现在道歉,如果这个问题已经被问到并回答了我一直在努力解决这个问题现在看起来好几天了,我陷入了最后的障碍,并且已经远远没有读过这个网站上的其他帖子所以听到了去...

我一直在处理一个将详细信息输入到xml文件中的表单,只要符合某些条件,我就需要另一个页面来显示xml文件中的数据。

基本XML结构

    <information>
    <entry>
    <date></date>
    <name></name>
    <status></status>
    <notes></notes>
    <comments></comments>
    </entry>
    </information>

基本上我正在使用

 $lib  = simplexml_load_file("sample.xml");
 $today = date("m/d/y");

 $query = $lib->xpath("//information//date[contains(., '$today')] |     //information//status[contains(., 'out')]");


 foreach($query as $node){

 echo "<div id='one'>$node->name</div>
 <div id='two'>$node->notes</div> 
 <div id='three'><div class='front'>$node->comments</div></div>";
 }

似乎打印应该有的div数量,但不会为值添加任何文本。请某位善意的人请指出我正确的方向,如果有人回答我会再次道歉,如果我没有足够的信息,我也会道歉。

更新:我要求做的是查询xml文件,查找具有今天日期和状态的条目,然后显示符合条件的每个条目的名称注释和注释,这将是在if语句中使用,如果它匹配则显示数据,否则显示另一个div感谢您的任何尝试。

更新2我正在运行的查询显示结果,如果其中一个答案匹配,我需要它来返回数据,如果它与之前都匹配,则提前返回。

1 个答案:

答案 0 :(得分:1)

如果要选择具有某些条件的后代标记<information>的所有<date>标记,或者使用具有特定条件的后代标记<status>,则xpath语法应为:

"//information[.//date[some criteria]] | //information[.//status[some criteria]]"

如果我猜对了你的内容,你的xpath查询应该如下:

$query = $lib->xpath("//information[.//date[contains(., '$today')]] | //information[.//status[contains(., 'out')]]");

PS:如果您需要//information代码而不是//entry,请将<entry>更改为<information>。 BTW我对PHP一无所知,只对这个问题的xpath部分感兴趣。