SVG の text タグなどに id 属性を付けてノードの値を変化させようなどと思っていたら、
どうも、ID に設定が必要になったらしいので、忘れないうちに書き留めておこう…
getElementById を呼んでも NULL が帰ってくる場合、
マニュアルの DOMDocument::getElementById を確認してみてください
この関数を動作させるには、何らかの ID 属性を DOMElement::setIdAttribute で設定するか、あるいは DTD で ID 型の属性を定義する必要があります。 後者の場合は、 DOMDocument::validate あるいは DOMDocument::$validateOnParse を使用してドキュメントを検証する必要があります
と有ります
その他、色々ありますので、こんな感じです
※ マトリックス状のフォームのデータを埋める感じです..
$svg = new DOMDocument("1.0","UTF-8");
$svg->validateOnParse = true;
@$svg->load("form.svg");
$svg->preserveWhiteSpace = false;
for( $i=1 ; $i<32 ; $i++ ){
for( $j=1; $j<=11; $j++ ){
$cellID = sprintf("id%02d%02d",$i,$j);
$node = $svg->getElementById($cellID);
…
多分、昔からの習性で、
$svg = DOMDocument::Load("form.svg");
と、してから一連の処理に突入すると思いますけれど、その後で validateOnParse
を設定しても駄目なようです
また、load を呼ぶと警告が発せられる場合がありますので @load にします
キチンと id でノードを呼び出せない場合は、この辺りを確認してみてください > 物覚えの悪い自分 ^^;
またしても、教訓が活きてない…
だめだな…