0

PHPを使用して、IDのcsvファイルを読み込む必要があります...

0123,0456,0789

... 次に、SVG XML グラフィック ファイルを読み込み、それらの特定の ID の色属性を変更します。

SVG ファイル内の各ポリゴンには、次のようなレコードがあります。一致するすべてのレコードの fill: 値を #d0d0d0 から #FF0000 に変更する必要があります。外側のループはもちろん ID になり、内側は SVG ファイルの各レコードになります。

style="font-size:12px; fill:#d0d0d0 ;fill-rule:nonzero;stroke:#000000;stroke-opacity:1;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke -linecap:butt;marker-start:none;stroke-linejoin:bevel" d="M 131.85275,310.64335 L 131.85275,311.08435" id="0123"

私の趣味レベルのプログラミング スキルでは、必要なループの一般的な PHP 構造と、スタイルの特定の属性にアクセスする方法のヒントが非常に役立ちます。

ありがとう!ブライアン

4

2 に答える 2

0

別のアプローチをお勧めします: CSS を使用して色を変更します。そこでは SVG 要素をループする必要はありません。これを行うには、SVG ファイルを少しクリーンアップする必要があります。これにより、ファイルがよりコンパクトになります。

私が理解しているように、色付けされるすべての要素には、コンテンツと同じスタイル属性があります

font-size:12px;fill:#d0d0d0;fill-rule:nonzero;stroke:#000000;stroke-opacity:1;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-linecap:butt;marker-start:none;stroke-linejoin:bevel

それらの属性を削除し、適切なclass属性に置き換えます。これらのパスが地図上の国であるとしましょう。次に、それらに属性を与えましょうclass="country"。次に、次のような 1 つの CSS ルールを使用して、これらすべてのスタイルを設定します。

.country {
  fill:  #d0d0d0;
  fill-rule:nonzero;
  stroke:#000000;
  stroke-opacity:1;
  stroke-width:0.1;
  stroke-miterlimit:4;
  stroke-dasharray:none;
  stroke-linecap:butt;
  marker-start:none;
  stroke-linejoin:bevel;
}

font-sizeこれは要素とは無関係であるため、プロパティは省略しました<path>。(おそらく、多くのプロパティがデフォルト値を繰り返すため、これをさらに単純化できます。パスの親要素でこれらのプロパティを変更しない限りfill-rulestroke-opacitystroke-miterlimitstroke-dasharraystroke-linecapおよびmarker-startは冗長ですが、誰も傷つけません。)

もう 1 つ問題があります。ファイル内の ID が実際に01230456またはのように見える場合0789、それらは無効です。XML 名の規則に従う必要があるためです。XML 名は数字で始まってはなりません。ID を使用してこれらの要素のスタイルを設定しようとするとき、またはそれらを使用しようとすると、問題が発生することが予想さgetElementById()れます。id0123したがって、それらを次のように変更したい場合がありますid0456id0789

これで、CSV データから CSS を動的に追加できるようになりました。

0123,0456,0789

になるだろう

#id0123,#id0456,#id0789 {fill:#FF0000}

これで完了です。CSS は SVG ファイルの要素に追加する<style>か、別の CSS ファイルを作成して SVG から参照することができます。この方法では、色を動的に変更するときに SVG を変更する必要はありません。SVG データを HTML でインラインで使用する場合、これを<style>HTML ページの要素または HTML によって参照される CSS ファイルに追加することもできます。

于 2013-01-13T11:30:03.623 に答える
0

DOMDocumentオブジェクトにはgetelementbyid getAttribute 、および setAttribute があり、xml を変更できるはずです。

この例explodeは、「;」で可能なスタイルを取得すると、必要なものに似ています。スタイルの配列を取得してからjoin、新しいスタイルを取得します。

于 2013-01-13T06:04:16.277 に答える