Viral
Viral

Reputation: 461

php xml DOMDocument close tag element

I am using PHP DOMDocument() to generate XML file with elements.

I am appending all details into sample xml file into components tag. But closing tag is not coming. I want to create closing tag.

My Code is doing this

<component expiresOn="2022-12-31" id="pam" />

I want to do like following

<component expiresOn="2022-12-31" id="pam"></component>

My PHP CODE SAMPLE

$dom = new DOMDocument();
$dom->load("Config.xml"); 
$components = $dom->getElementsByTagName('components')->item(0);

if(!empty($_POST["pam"])) {
    $pam = $_POST["pam"];
    $component = $dom->createElement('component');
    $component->setAttribute('expiresOn', $expirydate);
    $component->setAttribute('id', "pam");

    $components->appendChild($component5);
}

$dom->save("Config.xml");

I tested following suggestion and its not working. Both xml-php code are different.

$dom->saveXml($dom,LIBXML_NOEMPTYTAG);

Self-closing tags using createElement

I tested following. enter image description here

Upvotes: 1

Views: 1536

Answers (1)

iainn
iainn

Reputation: 17426

You're trying to use DOMDocument::saveXML to save the new XML back into the original file, but all that function does is return the XML as a string. Since you aren't assigning the result to anything, nothing happens.

If you want to save the XML back to your file, as well as avoiding self-closing tags, you'll need to use the save method as you originally were, and also pass the option:

$dom->save('licenceConfig.xml', LIBXML_NOEMPTYTAG);

See https://3v4l.org/e6N5s for a demo

Upvotes: 1

Related Questions