Search code examples
phpxmlsimplexml

Uncaught Error: SimpleXMLElement is not properly initialized


Hello I m working on php migration from V 7.2 to 8.1 and I have an error with SimpleXMLElement :

$string = <<<XML
<a>
 <b>
  <c>text</c>
  <c>stuff</c>
 </b>
 <d>
  <c>code</c>
 </d>
</a>
XML;

$xml = new SimpleXMLElement($string);
unset($xml[0]);

print_r(array(
    $xml,
    !empty($xml)
));

In php 7.2 a warning is triggered but for php 8.1 I've this error

Fatal error: Uncaught Error: SimpleXMLElement is not properly initialized in

Solution

  • I use unset to delete xml content, I found a solution it's catching php ERROR

    $string = <<<XML
    <a>
     <b>
      <c>text</c>
      <c>stuff</c>
     </b>
     <d>
      <c>code</c>
     </d>
    </a>
    XML;
    
    $xml = new SimpleXMLElement($string);
    unset($xml[0]);
    
    try {
        print_r(array(
           $xml,
          !empty($xml)
        ));
    }catch (\Error  $e) {
        trigger_error($e->getMessage(), E_USER_WARNING);
        // do someting
    }