Tôi có đối tượng kết quả SimpleXML này:Kiểm tra xem nút xml tồn tại trong PHP
object(SimpleXMLElement)#207 (2) {
["@attributes"]=>
array(1) {
["version"]=>
string(1) "1"
}
["weather"]=>
object(SimpleXMLElement)#206 (2) {
["@attributes"]=>
array(1) {
["section"]=>
string(1) "0"
}
["problem_cause"]=>
object(SimpleXMLElement)#94 (1) {
["@attributes"]=>
array(1) {
["data"]=>
string(0) ""
}
}
}
}
Tôi cần phải kiểm tra xem nút "problem_cause" tồn tại. Ngay cả khi nó trống, kết quả là một lỗi. Trên tay php, tôi thấy mã này php mà tôi sửa đổi cho nhu cầu của tôi:
function xml_child_exists($xml, $childpath)
{
$result = $xml->xpath($childpath);
if (count($result)) {
return true;
} else {
return false;
}
}
if(xml_child_exists($xml, 'THE_PATH')) //error
{
return false;
}
return $xml;
Tôi không có ý tưởng gì để đưa vào vị trí của truy vấn xpath 'THE_PATH' để kiểm tra xem nút tồn tại. Hoặc tốt hơn là chuyển đổi đối tượng simplexml thành dom?
Oh, cảm ơn. Đó là một giải pháp rất dễ dàng. – reggie
Nên sử dụng 'empty()' hơn 'isset()'. Việc truy cập con của đối tượng sẽ tạo nó nếu nó không tồn tại, vì vậy SimpleXMLElement sẽ trả về một phần tử rỗng và 'isset()' sẽ trả về true. –
@ MugomaJ.Okomba 'empty()' trả về true ngay cả khi nút tồn tại nhưng không có nội dung – CITBL