MATLAB Answers

XML構造体配列の複​数Fieldの中のそ​れぞれのField格​納されている要素の取​得

3 views (last 30 days)
構造体配列で、複数Fieldにまたがった下位配列の値を,for文を使わないで取得したいと考えています。
例えば、ChTable(n).Live.friutts.Ch(1,k).ChNameJp.Textの値を、for文を使わないで取得したいです。n=1000、k=1000と膨大になるため、実行速度が遅くなることを懸念しています。
for文を使わないで、値を取得するための知恵をかしていただけると幸いです。

Accepted Answer

Atsushi Ohashi
Atsushi Ohashi on 30 Sep 2020
ご質問の回答そのものではないかもしれませんが、ご懸念は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', n, char( nodes.item(n).item(0).getNodeValue ) );
end
end
もしくは、XMLファイルを読み込んで、そこからXMLを構造体へ変換されていると思いますので、変換の過程で必要なデータを抽出するのもあるかと思います。
  3 Comments
Shinij Kumagai
Shinij Kumagai on 2 Oct 2020
ご教授いただき、誠にありがとうございます。無事に実行できました。

Sign in to comment.

More Answers (0)

Products


Release

R2015a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!