XMl
, как показано ниже,удалить узел из `SimpleXMLElement Object`
<text font-family="Helvetica" font-size="25" style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); fill-rule: nonzero; opacity: 1;" >
<tspan x="-100" y="7.87" style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;">t</tspan>
<tspan x="-93" y="7.87" style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;">e</tspan>
<tspan x="-79" y="7.87" style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;">s</tspan>
<tspan x="-66" y="7.87" style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;">t</tspan>
</text>
Что я хочу сделать, это, держать первый tspan
и добавить все остальные tspan
значение на первом tspan
и удалить все остальные.
Он желаемый результат,
<text font-family="Helvetica" font-size="25" style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); fill-rule: nonzero; opacity: 1;" >
<tspan x="-100" y="7.87" style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;">test</tspan>
</text>
Для этого, что я сделал,
$previousValue = null;
$first = $text->tspan[0];
foreach($text->tspan as $k2=>$span){
if(is_object($span)){
$style = $span->attributes()->style;
if($previousValue) {
if(strcmp($style,$previousValue) === 0){
$first.=$span;
//$dom=dom_import_simplexml($span); $dom->parentNode->removeChild($dom);
}
}
$previousValue = $style;
}
}
$text->tspan[0] = $first;
Это создаст первый узел совершенны, но не удаляя другие узлы собственно. Я попытался это даже
$dom=dom_import_simplexml($span); $dom->parentNode->removeChild($dom);
Но это только извлекая 1 узел и разорвать петлю затем. Не знаю, что там происходит. Я делаю там какую-то ошибку?
Я использую этот ключ в foreach 'xmlobject' и выглядит как' tspans = $ xml-> xpath ('// tspan'); 'не работает там. Я только что добавил часть xml здесь. вы можете увидеть мой полный xml здесь. https://www.printhubpro.co.uk/images/export_edited.svg – hemsbhardiya
и вот мой полный образец кода http://sandbox.onlinephpfunctions.com/code/5e80bf5d738cc65b6c145cb047b6f195a67364fe – hemsbhardiya
спасибо за ответ, но все же его не работает согласно к моему xml. ты его видел? он имеет также тег 'g'. я знаю, что мы закрылись, и небольшая вещь заставит его работать. но я совершенно новый на xmlobject – hemsbhardiya