天天看點

Matlab 讀取xml檔案的一個簡單例子

Matlab 讀取xml檔案的一個簡單例子)

所要讀取的xml檔案如下: <?xml version="1.0" encoding="UTF-8" ?>- -   0.005 0.007 0.0098 0.0137 0.0192 0.0269 0.0376 0.0527 0.0738 0.103 0.145 0.203 0.284 0.397 0.556 0.778 1.09 1.52 2.13- - gml:Point  gml:pos116.556679644 38.7640703645</gml:pos>  </gml:Point>  0.764679817743 0.662888722857 0.534651971396 0.395102975673 0.262868748692 0.156498150108 0.0839056548406 0.0398623492904 0.0168311356765 0.00628243377305 0.00192976563727 0.00050178417303 0.000101955783797 1.49877361281e-05 1.25257346917e-06 2.48172116758e-08 0.0 0.0 0.0  - - gml:Point  gml:pos116.560354569 39.2137311674</gml:pos>  </gml:Point>  0.819195867027 0.745982415614 0.650046705716 0.538095912232 0.42148331053 0.314451605987 0.226852492161 0.157895373067 0.105089631293 0.0655477304784 0.0365455920132 0.0179762171754 0.00739120623057 0.00242299927625 0.000555837553419 7.80321663033e-05 3.68909948061e-06 4.68251725086e-08 0.0  - - gml:Point  gml:pos116.564112835 39.6633919704</gml:pos>  </gml:Point>  0.818984158857 0.748053882014 0.660281270455 0.563565016939 0.465616471518 0.372887218748 0.289156026001 0.213045568572 0.14661406957 0.0926499641819 0.0516418099588 0.0253320791887 0.0105544475567 0.00367398872789 0.00100376612408 0.000217455272141 3.76724116531e-05 5.4251531106e-06 3.86226385822e-08  。。。。。。。。。。。。。。。。後面還有很多,不過都是一樣的就是由許多組成。要讀取的有三類資料,一個是後面那一行資料,代表加速度水準,一個是gml:pos後面那一行數,是坐标,還有一個就是後面那一行,代表超越機率。首先,要明白gml:pos這些都叫Tag。m檔案如下:(上面那個xml檔案取名為test.xml好了)clcclearDoc=xmlread(‘test.xml’); %讀入xml檔案IML=Doc.getElementsByTagName_r(‘IMLs’);%把名為IMLs的所有标簽儲存在IML裡Coordinate=Doc.getElementsByTagName_r(‘gml:pos’);%同上Poes=Doc.getElementsByTagName_r(‘poEs’);%同上IMLContent=char(IML.item(0).getFirstChild.getData);%因為xml裡隻有一個IMLs标簽,這裡不用循環。IMLn=str2num(IMLContent); %必須用str2num,不能用str2double 把獲得的加速度值轉化為數字形式nSites=Coordinate.getLength; %工程場地的個數coordinate=zeros(nSites,2); % 把坐标向量的維數定好,先以0代替poes=zeros(nSites,length(IMLn));%把超越機率值的維數定好,以0代替for jj=0:nSites-1 % <gml:pos>有多個,是以必須循環,而且是從0開始的    Tcoordinate=char(Coordinate.item(jj).getFirstChild.getData);%獲得第jj個坐标的内容    Tpoes=char(Poes.item(jj).getFirstChild.getData);%獲得第jj個超越機率數值内容    Tcoor=str2num(Tcoordinate);%把以上内容轉換為數值形式    poes(jj+1,:)=str2num(Tpoes);%把以上内容轉換為數值形式并儲存在poes向量中    coordinate(jj+1,1)=Tcoor(1);%把坐标儲存在coordinate向量中    coordinate(jj+1,2)=Tcoor(2);%把坐标儲存在coordinate向量中下

xml