xmlファイルのタグ要素の抽出
    9 次查看(过去 30 天)
  
       显示 更早的评论
    
以前の質問が上手く反映されていなかったので、再度、投稿させていただきました。 下記XMLファイルの  ChNameJp~</ChNameJp>だけを読み込んでリストを作りたいです。 下記URLを参考にしたのですが、うまく、読み込むことができませんでした。 https://jp.mathworks.com/help/matlab/import_export/importing-xml-documents.html?s_tid=srchtitle ご教授いただけると幸いです。 version="1.0" ? Version="1.0.0"  Min="112"  No="1"  No>1</No  Protect>False</Protect  ChNameJp>AAAA</ChNameJp  Comment</Comment>  /Ch  No="2"  No>2</No  Protect>False</Protect  ChNameJp>BBBB</ChNameJp  Comment</Comment>  /Ch  /Voltage  Min="4"  No="1"  No>1</No  Protect>False</Protect  ChNameJp>CCCC</ChNameJp  Comment</Comment>  /Ch  /Frequency  Min="0" Use="False" Boudrate="0"  No="1"  No>1</No  Protect>False</Protect  ChNameJp>1=A1_0</ChNameJp  Commentコント</Comment>  /Ch  No="2"  No>2</No  Protect>False</Protect  ChNameJp</ChNameJp>  Comment</Comment>  /Ch  /TTT1 /Setting
3 个评论
  michio
    
 2020-9-24
				ファイルを添付頂きありがとうございます。以下の回答に記載したのコードでは Living.txt で一部 /Ch で閉じられていない部分があったので修正して使用しました。
采纳的回答
  michio
    
 2020-9-24
        まずは参考まで、R2020b で使える readstruct という関数で xml ファイルを処理しやすいのでもし使用できる環境でしたらバージョンアップも検討ください。
>> t = readstruct('Living.txt','FileType','xml')
t = 
  フィールドをもつ struct:
    VersionAttribute: "1.0.0"
              fruits: [1×1 struct]
                Meat: [1×1 struct]
                 Veg: [1×1 struct]
               house: [1×1 struct]
>> struct2table(t.fruits.Ch)
ans =
  3×7 table
    NoAttribute    No    UnitComment    Protect    ChNameJp    ChNameEn    Comment
    ___________    __    ___________    _______    ________    ________    _______
         1         1       "青森"       "False"    "Apple"     "Apple"     "赤"    
         2         2       "秋田"       "False"    "Banana"    "Banana"    "黄"    
         3         3       "山梨"       "False"    "Peach"     "Peach"     "Peach"
>> struct2table(t.Meat.Ch)
ans =
  3×7 table
    NoAttribute    No    UnitComment    Protect    ChNameJp     ChNameEn     Comment
    ___________    __    ___________    _______    _________    _________    _______
         1         1       "熊本"       "False"    "Basashi"    "Basashi"     "赤"   
         2         2       "富士"       "False"    "Basashi"    "Basashi"     "赤"   
         5         5       "NA"         ""         ""           ""            ""    
>> struct2table(t.Veg.Ch)
ans =
  1×7 table
    NoAttribute    No    UnitComment    Protect    ChNameJp    ChNameEn    Comment
    ___________    __    ___________    _______    ________    ________    _______
         1         1       "香川"       "False"    "1R=6K"       "6K"       "緑"   
>> struct2table(t.house.Ch)
ans =
  2×8 table
    NoAttribute    No    Comment1    UnitComment    Protect    ChNameJp    ChNameEn    Comment
    ___________    __    ________    ___________    _______    ________    ________    _______
         1         1      "緑2"        "鹿児島"      "False"    "2R=5K"       "5K"       "緑"  
         2         2      "緑2"        "北海道"      "False"    "1R=5K"       "5K"       "緑"  
5 个评论
  michio
    
 2020-9-25
				xml2struct 関数は以下からダウンロードして R2015aSP1 でも使えるのでぜひ試してみてください。
構造体として xml ファイルの内容を採ってきますので、そこから ChNameJp に該当する情報を抜き出す作業が必要ですが、getElementByTagName で操作するより楽だと思いご紹介いたしました。
どうしても getElementsByTagName で・・という事であれば試してみますが少し大変そうでしたので・・。すいません。
更多回答(0 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 構造化データと XML ドキュメント 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!