質問: xml構造体配列の複数fieldの中のそれぞれのfield格納されている要素の取得 構造体配列で、複数fieldにまたがった下位配列の値を,for文を使わないで取得したいと考えています。 例えば、chtable(n).live.friutts.ch(1,k).chnamejp.textの値を、for文を使わないで取得したいです。n=1000、k=1000と膨大になるため、実行速度が遅くなることを懸念しています。 for文を使わないで、値を取得するための知恵をかしていただけると幸いです。
回答: ご質問の回答そのものではないかもしれませんが、ご懸念はforループの回数が多くなることで実行速度が遅くなることだと思いますので、for文の回数が減る回答とさせてください。 xmlを構造体の形にせず、xmlファイルを読み込んで該当するノードのみを取得し、それに対してforで値を取得する方法になります。以下にサンプルを記載しましたので、ご参考になれば幸いです。 dom = xmlread('chsetting.chs'); nodes = dom.getelementsbytagname('chnamejp'); % ゼロから始まります for n = 0: nodes.getlength-1 if nodes.item(n).haschildnodes fprintf('%d: %s ', n, char( nodes.item(n).item(0).getnodevalue ) ); end end もしくは、xmlファイルを読み込んで、そこからxmlを構造体へ変換されていると思いますので、変換の過程で必要なデータを抽出するのもあるかと思います。