data.xmlというxmlファイル(実を言うとgraphmlファイル)が与えられています。
XML
1<!--前略--> 2<node id="hoge1"> 3 <data key="d0" > 4 <y:ShapeNode > 5 <y:Geometry width="30.0" height="30.0" x="0.0" y="0.0"/> 6 <y:Fill color="#FF0000" transparent="false" /> 7 <y:BorderStyle type="line" width="1.0" hasColor="false" /> 8 <y:NodeLabel color="#949494" visible="true">hoge1</y:NodeLabel> 9 <y:Shape type="circle" /> 10 </y:ShapeNode> 11 </data> 12</node> 13<node id="hoge2"> 14 <!--中略--> 15</node> 16<!--省略-->
といった形で各nodeが書かれているとします。
JavaScriptにより
sample_tsv.txt
hoge1 piyo1 #fuga1
hoge2 piyo2 #fuga2
というTSVを受け取って、TSVの最初の列で指定したnode idのnodeの、
・y:GeometryのwidthとheightをTSVの第2列で指定した数値の10倍だけ倍にする
という操作や、
・y:Fill colorをTSVの第3列で指定した色コードに書き換える
という操作をdata.xmlに対して行いたいです。処理後はdata_ed.xmlなど何か別名のxmlファイルとしたいです。
理想は何かウェブブラウザ上のUIでそういった処理を行いたいところですが、現時点ではとりあえずjsのコードと同じディレクトリにあるtsvやxmlを受け取る形です。
http://www.openspc2.org/reibun/D3.js/code/file/xml/0001/index.htmlを参照しながら
d3.xmlによりnodeタグの要素を取り出し、そのタグの数だけforで処理しようとしました。
まず前述のサイトのように、tsvによる指定などはしないでhoge1などだけを表示しようといましたが、
以下のようにJSコードを書き換えて上述の私のdata.xmlを用いたのですが、コンソールに
yNodeLabel[0].firstChild is null
と表示されてしまいました。
JavaScript
1d3.xml("data/data.xml", "application/xml", function(error, xmlRoot){ 2 var node = xmlRoot.getElementsByTagName("node"); 3 var text = ""; 4 for(var i=0; i<node.length; i++){ // 指定タグの数だけ処理 5 var yNodeLabel= node[i].getElementsByTagName("y:NodeLabel"); 6 text += yNodeLabel[0].firstChild.nodeValue +"<br>"; 7 } 8 d3.select("#result").html(text); 9});
当方、Windows8.1で、ブラウザはFirefoxです。
なお、上述のサイトはオンラインであればchromeでも「サンプルを実行する」ことができるようですが、
DLしたサンプルを動かしてみるとchromeではD3.jsサンプルという太字だけが出現しました。
以上長くなってしまいましたが、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/11 06:32 編集
2015/11/11 08:29
2015/11/11 11:12