如何更改svg文件的属性值

时间:2010-05-18 12:17:47

标签: php xml-attribute

在samplexml.svg中有一个节点

<image width="744" height="1052" xlink:href="image1.png"/>

我需要将“image1.png”替换为“image2.png”之类的其他值。请指导我如何使用示例代码。

我可以获得属性值“image1.png”。这是代码:

$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;

这是samplexml.svg:

<svg>
    <g>
        <title>Test title</title>
        <image x="0" y="0" width="744" height="1052" xlink:href="image1.png"/>
    </g>
</svg>

如何以编程方式更改xlink:href值?

2 个答案:

答案 0 :(得分:13)

使用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();

答案 1 :(得分:-2)

一种方法是将文件作为字符串加载,然后对其进行搜索和替换。然后,您可以使用loadXML http://www.php.net/manual/en/domdocument.loadxml.php并将更改的字符串作为参数提供。