How to change the attribute value of svg file

php, xml-attribute

Solution

Use DOMElement::setAttributeNS():

$xdoc = new DomDocument;
$xdoc->Load('svg.xml');
$tagName = $xdoc->getElementsByTagName('image')->item(0);
$attribNode = $tagName->getAttributeNode('xlink:href');

echo "Attribute Name  : " . $attribNode->name . "<br/>";
echo "Attribute Value : " . $attribNode->value;

$tagName->setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', 'image2.png');

echo $xdoc->saveXML();

Problem

In samplexml.svg there is a node ``` <image width="744" height="1052" xlink:href="image1.png"/> ``` I need to replace "image1.png" with another value like "image2.png". Please guide me with sample code how to to that. I could get the attribute value "image1.png". Here is the code: ``` $xdoc = new DomDocument; $xdoc->Load('samplexml.svg'); $tagName = $xdoc->getElementsByTagName('image')->item(0); $attribNode = $tagName->getAttributeNode('xlink:href'); echo "Attribute Name : " . $attribNode->name . "<br/>"; echo "Attribute Value : " . $attribNode->value; ``` Here is samplexml.svg: ``` <svg> <g> <title>Test title</title> <image x="0" y="0" width="744" height="1052" xlink:href="image1.png"/> </g> </svg> ``` How do I programmatically change the xlink:href value?

Original source