1

私のプログラムが効果的に行おうとしているのは、xmlファイル(以前はsvgファイルでした)からデータを取得することです。これにより、xmlタグから属性および値として関連情報を取得します。私は私のphpをこのように設定しています

foreach($xml_file_open->g->path[0]->attributes() as $attribute => $value)
{
echo $attribute => $value
}

xml_file_open属性リクエストの出力は次のとおりです。

style="fill:#ff0000;fill-rule:evenodd;stroke:#000000;
stroke-width:1px;stroke-linecap:butt;stroke-linejoin:
miter;stroke-opacity:1"
id="path2987"
d="m 631.42859,603.79077 a 212.85715,162.85715 0 1 1
-425.7143,0 212.85715,162.85715 0 1 1 425.7143,0 z" 

(スタイルとdが読みやすくするために意図的に分割された3行)一方、これらの3行のデータを取得する代わりに、このタグ内のすべてを取得しようとしています。

<path
   sodipodi:type="arc"
   style="fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:1px;
stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
   id="path2987"
   sodipodi:cx="418.57144"
   sodipodi:cy="603.79077"
   sodipodi:rx="212.85715"
   sodipodi:ry="162.85715"
   d="m 631.42859,603.79077 a 212.85715,162.85715 0 1 1
 -425.7143,0 212.85715,162.85715 0 1 1 425.7143,0 z" />

それはsodipodiのようです:属性として読み取られないのですが、sodipodi:cx / cyなどを属性として読み取るにはどうすればよいですか?

4

2 に答える 2

1

「sodipodi:」-属性名の一部は名前空間プレフィックスです。XMLをどのように読みますか?DOM APIを使用する場合、プレフィックスはDOMNodeクラスを介して利用できます。

于 2012-05-08T13:17:51.920 に答える
1

名前空間URIをattributesメソッドに渡して、プレフィックス付き属性にアクセスします。

$attrs = $node->attributes('http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd');
echo $attrs['cx'];

詳細については、http://us3.php.net/manual/en/simplexmlelement.attributes.phpをご覧ください。

于 2012-05-08T15:07:44.487 に答える