我有很多xml
个文件,我不想获取该值,但检查他们是否有孩子点头或否。所以我使用count
代替foreach
。但如果第一个no
roop中没有$xml->book->date
,我的代码总会回显$xml->book
。
$xml = simplexml_load_file('some.xml');
if (@count($xml->book->date)>0){
echo 'yes';
}else{
echo 'no';
}
像这样的<?xml version="1.0" encoding="utf-8"?>
<Catalog>
<book>
<title/><description/><price/>
</book>
<book>
<title/><description/><price/>
<date/> //(optional, there may be 0 to n [book] elements having a [date] element in the document)
</book>
<book>
<title/><description/><price/>
</book>
<book>
<title/><description/><price/>
<date/>
</book>
</Catalog>
对于本文档,“count($ xml-&gt; book-&gt; date)”的工作版本的结果应为2,即&gt; 0
编辑:也许不要使用count
,但如何检查整个xml文件中是否有date
childnod?感谢。
答案 0 :(得分:4)
为什么不尝试使用xpath?
$date=$xml->xpath('/book/date[1]');
if($date){
echo 'Yes';
}
else{
echo 'No';
}
答案 1 :(得分:0)
我猜你在计数之前不需要'@'(....)。试试没有那个
答案 2 :(得分:0)
如果你想检查整个xml文档,那么我认为你必须遍历所有书籍元素 -
$found = false;
foreach($xml->book as $book)
{
if(count($book->date)>0)
{
$found = true;
break;
}
}