我有simplexml
元素对象,它呈现了foreach结果的输出。我必须从输出中提取值。
到目前为止,我试图循环simplexmlelement
个对象。我正在从给定的输出中形成svg
元素。这些输出来自另一个foreach
循环结果。
[g] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 0.2922376764472574
)
[text] => SimpleXMLElement Object
(
[@attributes] => Array
(
[fill] => #000000
[stroke] => none
[stroke-width] => 0
[stroke-linecap] => round
[stroke-linejoin] => round
[x] => 65
[y] => 85
[text-anchor] => middle
[font-size] => 90.75
[font-family] => Twine
[data-textcurve] => 0
[data-itemzoom] => 1 1
)
[tspan] => Tetst
)
)
for ($i = 0; $i < count($result); $i++)
{
//var_dump( $result[$i] );
//$op .= '<g id="0.8354780427180231">';
print_r($result[$i]);
echo "testsdf";print_r($result[$i]->g['text']);
echo 'test<g id="'.$result[$i]->g['id'].'"><text fill="'.$result[$i]->text->attributes()->fill.'" stroke="none" stroke-width="0" stroke-linecap="round" stroke-linejoin="round" x="65" y="85" text-anchor="middle" font-size="90.75" font-family="Twine" data-textcurve="0" data-itemzoom="1 1">'.$result[$i]->text['tspan'].'</text>';
echo "</g>";
echo $result[$i]->g->text['font-family'];
}
答案 0 :(得分:0)
使用SimpleXML如何使用结构和访问文档各个部分的一个小例子。
<?php
error_reporting ( E_ALL );
ini_set ( 'display_errors', 1 );
$html = "<body>
<g id='0.2922376764472574'>
<text fill='#000000' stroke='none' stroke-width='0'>
<tspan>Tetst</tspan>
</text>
</g>
</body>";
$doc = simplexml_load_string($html);
foreach ( $doc->g as $tag) {
echo "<g id='".$tag['id']."'>";
echo "<text fill='".$tag->text['fill']."'>";
echo $tag->text->tspan;
echo "</text>";
echo "</g>";
}
我必须对您的XML内容做出假设,但我希望这已经足够了。
我基于循环遍历文档根目录下的所有标记。如果不是这种情况,您可以将其更改为...
foreach ($result as $tag)
如果您(例如)从XPath查询中获取这些内容,它应该做同样的事情。
我已经取出了一些属性,但它只是重复相同逻辑的一种情况,访问每个属性就好像它是一个关联数组元素。
测试样本的输出是......
<g id='0.2922376764472574'><text fill='#000000'>Tetst</text></g>