亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過 PHP 腳本選擇并獲取特殊的 svg 元素

通過 PHP 腳本選擇并獲取特殊的 svg 元素

PHP
精慕HU 2023-04-28 14:09:19
需要首先通過 php 腳本在 SVG 文件內部具有特殊(動態)的polygon組中獲取和修改。使用 DOMDocument() 和 DOMXPath 找不到此元素。請幫忙gidPHP:$svg = file_get_contents($svgPath);$doc = new DOMDocument();$doc->loadXML($svg);$doc->preserveWhiteSpace = false;$xpath = new DOMXPath($doc);$xpath->registerNamespace('svg','http://www.w3.org/2000/svg');**$curPolygon = $xpath -> query("//svg:g[@id='fl_1']/polygon[0]");**if ($curPolygon ) {  $curPolygon [0]->setAttribute('fill', '#ae8f72');}$svg = $doc->saveXML($doc);echo $svg;SVG:<svg>...<g id="Flats">    ...    <g id="fl_1">        <polygon fill="none" points="0,0 436.5,0 436.5,197.7 257,197.7 257,267.1 196.9,267.1 196.9,293.9 0,293.9"/>        <g> <rect x="209.9" y="84.8" fill="#AE8E72" width="56.3" height="22.1"/> </g>        <text transform="matrix(1 0 0 1 214.1091 101.5043)"><tspan x="0" y="0">4</tspan></text>        <text transform="matrix(1 0 0 1 235.5047 101.5042)">132,0</text>    </g>    <g id="fl_2">        <polygon fill="none" points="404.5,388.7 404.5,390 251.7,390 251.7,192.3 436.5,192.3 436.5,388.7"/>        <g> <rect x="327.7" y="278.4" fill="#AE8E72" width="56.3" height="22.1"/> </g>        <text transform="matrix(1 0 0 1 331.8962 295.0608)"><tspan x="0" y="0">1</tspan></text>        <text transform="matrix(1 0 0 1 354.9925 295.0607)">40,7</text>    </g>    ...</g>...</svg>結果var_dump($q)是object(DOMNodeList)#6 (1) { ["length"]=> int(0) }
查看完整描述

1 回答

?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

您的代碼中的幾件事。首先是您似乎沒有加載文檔...

$doc->loadXML($svg);

第二部分是 XPath 表達式。我認為如果您將命名空間svg作為默認命名空間,那么您需要將其應用于 XPath 表達式的兩個部分。XPath 數組也從 1 開始,所以表達式應該是

$curPolygon = $xpath -> query("//svg:g[@id='fl_1']/svg:polygon[1]");


查看完整回答
反對 回復 2023-04-28
  • 1 回答
  • 0 關注
  • 183 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號