Как изменить значение атрибута файла SVG - PullRequest
5 голосов
/ 18 мая 2010

В 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 ]

13 голосов
/ 18 мая 2010

Использовать 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();
0 голосов
/ 18 мая 2010

Одним из способов может быть загрузить файл в виде строки, а затем выполнить поиск и заменить его. Затем вы можете использовать loadXML http://www.php.net/manual/en/domdocument.loadxml.php и предоставить измененную строку в качестве параметра.

...