Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-如何检查XML元素中是否有文本_Php_Xml - Fatal编程技术网

php-如何检查XML元素中是否有文本

php-如何检查XML元素中是否有文本,php,xml,Php,Xml,:)假设我有这样的代码: <sample number="1">TEXT</sample> 您需要将元素类型转换为字符串,然后检查它是否为空。 下面是一个简单的例子: $test = simplexml_load_string("<test><elem test='12'><sub /><sub /></elem><elem test='12'>hi</elem><elem tes

:)假设我有这样的代码:

<sample number="1">TEXT</sample>

您需要将元素类型转换为字符串,然后检查它是否为空。 下面是一个简单的例子:

$test = simplexml_load_string("<test><elem test='12'><sub /><sub /></elem><elem test='12'>hi</elem><elem test='9' /><elem /></test>");
foreach($test as $elem){

    echo "\n";
    var_dump($elem);
    if((string)$elem == '' && $elem->count() == 0)
        echo 'Empty';
    else
        echo 'Full';


}

为什么准确了解用户如何编写语法很重要?是否要拒绝
?这不是答案,但。。。出于迂腐的语义原因,想要检测到这一点通常是错误的。只要以任何[有效]形式解析XML,处理数据,然后继续。不,我想拒绝
。从
sample
中检索数据是因为,这些数据包含指向IMG的链接,当它自动关闭->没有IMG时,站点看起来很难看。我想处理这个问题。@CappY:那么你只想确定元素中是否有文本?这对我来说不是一个干净的解决方案,在花了1个小时搜索更干净的解决方案后,我发现这种方法是有效的:
if((string)$xml->sample!=NULL)
但是谢谢你的回答。:)我不知道这怎么会更干净。您正在将某个内容键入字符串,然后将其与非字符串的内容进行比较。当你做一个而不是一个!==。php将NULL“转换”为“”。所以基本上,你做的和我一样,只是你只检查他们的文本内容,而不是他们的子元素。@FMaz008的答案对我来说很好,我看不出有什么不清楚的地方。此外,您的建议(字符串转换,然后与
null
)没有任何意义,并且具有误导性,因为字符串转换永远不会导致
null
$content = @file_get_contents($url);
$xml = new SimpleXMLElement($content);
$test = simplexml_load_string("<test><elem test='12'><sub /><sub /></elem><elem test='12'>hi</elem><elem test='9' /><elem /></test>");
foreach($test as $elem){

    echo "\n";
    var_dump($elem);
    if((string)$elem == '' && $elem->count() == 0)
        echo 'Empty';
    else
        echo 'Full';


}
object(SimpleXMLElement)#3 (2) {
  ["@attributes"]=>
  array(1) {
    ["test"]=>
    string(2) "12"
  }
  ["sub"]=>
  array(2) {
    [0]=>
    object(SimpleXMLElement)#4 (0) {
    }
    [1]=>
    object(SimpleXMLElement)#5 (0) {
    }
  }
}
Full
object(SimpleXMLElement)#5 (2) {
  ["@attributes"]=>
  array(1) {
    ["test"]=>
    string(2) "12"
  }
  [0]=>
  string(2) "hi"
}
Full
object(SimpleXMLElement)#3 (1) {
  ["@attributes"]=>
  array(1) {
    ["test"]=>
    string(1) "9"
  }
}
Empty
object(SimpleXMLElement)#5 (0) {
}
Empty