python从xml读取数据

来源:互联网 发布:让vb文本框中内容滚动 编辑:程序博客网 时间:2024/06/05 06:21
from xml.etree import ElementTree as ET
def getSubDir(path):    dirname=list()    for file in os.listdir(path):        dirname.append(file)    return dirname

def get_xml_data(path):    xmlFileNames = getSubDir(path)    gesturePositionEndCount = 0    for xmlFileName in xmlFileNames:        if gesturePositionEndCount < int(str(xmlFileName).split("Skeleton ")[1].split(".xml")[0]):            gesturePositionEndCount = int(str(xmlFileName).split("Skeleton ")[1].split(".xml")[0])    gesture = np.zeros((gesturePositionEndCount+1, 24))    gesturePositionStartCount = gesturePositionEndCount    for xmlFileName in xmlFileNames:        xmlPath = path + xmlFileName        dom=ET.parse(xmlPath)        TrackStatus=dom.findall('./Skeleton/TrackingState')        isTracked = False        for trackStatu in TrackStatus:            if trackStatu.text=="Tracked":                isTracked=True        JointsPosition = np.zeros((24))        if isTracked==True:            gestureCount=int(str(xmlFileName).split("Skeleton ")[1].split(".xml")[0])            if gesturePositionStartCount > gestureCount:                gesturePositionStartCount = gestureCount            Joints = dom.findall('./Skeleton/Joints/Joint/Position')            JointType=dom.findall('./Skeleton/Joints/Joint/JointType')            for i in range(20):                if JointType[i].text == 'Spine' :                    JointsPosition[0] = float(Joints[i][0].text)                    JointsPosition[1] = float(Joints[i][1].text)                    JointsPosition[2] = float(Joints[i][2].text)                elif JointType[i].text == 'ShoulderCenter':                    JointsPosition[3] = float(Joints[i][0].text)                    JointsPosition[4] = float(Joints[i][1].text)                    JointsPosition[5] = float(Joints[i][2].text)                elif JointType[i].text == 'ElbowLeft':                    JointsPosition[6] = float(Joints[i][0].text)                    JointsPosition[7] = float(Joints[i][1].text)                    JointsPosition[8] = float(Joints[i][2].text)                elif JointType[i].text == 'WristLeft':                    JointsPosition[9] = float(Joints[i][0].text)                    JointsPosition[10] = float(Joints[i][1].text)                    JointsPosition[11] = float(Joints[i][2].text)                elif JointType[i].text == 'HandLeft':                    JointsPosition[12] = float(Joints[i][0].text)                    JointsPosition[13] = float(Joints[i][1].text)                    JointsPosition[14] = float(Joints[i][2].text)                elif JointType[i].text == 'ElbowRight':                    JointsPosition[15] = float(Joints[i][0].text)                    JointsPosition[16] = float(Joints[i][1].text)                    JointsPosition[17] = float(Joints[i][2].text)                elif JointType[i].text == 'WristRight':                    JointsPosition[18] = float(Joints[i][0].text)                    JointsPosition[19] = float(Joints[i][1].text)                    JointsPosition[20] = float(Joints[i][2].text)                elif JointType[i].text == 'HandRight':                    JointsPosition[21] = float(Joints[i][0].text)                    JointsPosition[22] = float(Joints[i][1].text)                    JointsPosition[23] = float(Joints[i][2].text)            gesture[gestureCount]=JointsPosition    gesture=gesture[gesturePositionStartCount:]    return gesture
以下为xml文件,为G3D数据集之一 [1]Hyo-Rim Choi ID ,TaeYong Kim,  Combined Dynamic Time Warping with Multiple Sensors for 3D Gesture Recognition
<?xml version="1.0" encoding="utf-8"?><ArrayOfSkeleton xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  <Skeleton>    <TrackingState>Tracked</TrackingState>    <TrackingId>2</TrackingId>    <Position>      <X>-0.0214900617</X>      <Y>-0.0816660151</Y>      <Z>2.89792681</Z>    </Position>    <Joints>      <Joint>        <Position>          <X>0.00019626577</X>          <Y>0.0970646441</Y>          <Z>2.97007537</Z>        </Position>        <JointType>HipCenter</JointType>        <TrackingState>Tracked</TrackingState>        <PositionToDepth>          <X>160</X>          <Y>111</Y>          <Depth>2970</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>317</X>          <Y>251</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>-0.00932758953</X>          <Y>0.159060836</Y>          <Z>3.02927184</Z>        </Position>        <JointType>Spine</JointType>        <TrackingState>Tracked</TrackingState>        <PositionToDepth>          <X>159</X>          <Y>105</Y>          <Depth>3029</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>315</X>          <Y>241</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>-0.00241138716</X>          <Y>0.5289015</Y>          <Z>3.04308677</Z>        </Position>        <JointType>ShoulderCenter</JointType>        <TrackingState>Tracked</TrackingState>        <PositionToDepth>          <X>160</X>          <Y>70</Y>          <Depth>3043</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>316</X>          <Y>178</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>0.01377838</X>          <Y>0.7075398</Y>          <Z>2.98631644</Z>        </Position>        <JointType>Head</JointType>        <TrackingState>Tracked</TrackingState>        <PositionToDepth>          <X>161</X>          <Y>52</Y>          <Depth>2986</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>319</X>          <Y>146</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>-0.162368089</X>          <Y>0.422489941</Y>          <Z>2.99799681</Z>        </Position>        <JointType>ShoulderLeft</JointType>        <TrackingState>Tracked</TrackingState>        <PositionToDepth>          <X>145</X>          <Y>80</Y>          <Depth>2998</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>289</X>          <Y>195</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>-0.213914037</X>          <Y>0.162961826</Y>          <Z>2.93309474</Z>        </Position>        <JointType>ElbowLeft</JointType>        <TrackingState>Inferred</TrackingState>        <PositionToDepth>          <X>139</X>          <Y>104</Y>          <Depth>2933</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>279</X>          <Y>239</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>-0.221437737</X>          <Y>-0.04951407</Y>          <Z>2.83616543</Z>        </Position>        <JointType>WristLeft</JointType>        <TrackingState>Inferred</TrackingState>        <PositionToDepth>          <X>138</X>          <Y>125</Y>          <Depth>2836</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>276</X>          <Y>276</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>-0.200154513</X>          <Y>-0.146072283</Y>          <Z>2.815992</Z>        </Position>        <JointType>HandLeft</JointType>        <TrackingState>Inferred</TrackingState>        <PositionToDepth>          <X>140</X>          <Y>135</Y>          <Depth>2816</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>280</X>          <Y>295</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>0.16760999</X>          <Y>0.401035815</Y>          <Z>3.05390549</Z>        </Position>        <JointType>ShoulderRight</JointType>        <TrackingState>Tracked</TrackingState>        <PositionToDepth>          <X>176</X>          <Y>82</Y>          <Depth>3054</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>345</X>          <Y>200</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>0.209677354</X>          <Y>0.1398712</Y>          <Z>3.0224824</Z>        </Position>        <JointType>ElbowRight</JointType>        <TrackingState>Inferred</TrackingState>        <PositionToDepth>          <X>180</X>          <Y>107</Y>          <Depth>3022</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>352</X>          <Y>244</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>0.2035667</X>          <Y>-0.07699941</Y>          <Z>2.937693</Z>        </Position>        <JointType>WristRight</JointType>        <TrackingState>Inferred</TrackingState>        <PositionToDepth>          <X>180</X>          <Y>127</Y>          <Depth>2938</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>352</X>          <Y>281</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>0.183235392</X>          <Y>-0.171021983</Y>          <Z>2.9072</Z>        </Position>        <JointType>HandRight</JointType>        <TrackingState>Inferred</TrackingState>        <PositionToDepth>          <X>178</X>          <Y>137</Y>          <Depth>2907</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>349</X>          <Y>298</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>-0.07376713</X>          <Y>0.0284980889</Y>          <Z>2.94717479</Z>        </Position>        <JointType>HipLeft</JointType>        <TrackingState>Tracked</TrackingState>        <PositionToDepth>          <X>153</X>          <Y>117</Y>          <Depth>2947</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>303</X>          <Y>263</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>-0.167436987</X>          <Y>-0.486169368</Y>          <Z>2.995955</Z>        </Position>        <JointType>KneeLeft</JointType>        <TrackingState>Tracked</TrackingState>        <PositionToDepth>          <X>144</X>          <Y>166</Y>          <Depth>2996</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>288</X>          <Y>352</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>-0.205453873</X>          <Y>-0.8678049</Y>          <Z>2.98811626</Z>        </Position>        <JointType>AnkleLeft</JointType>        <TrackingState>Tracked</TrackingState>        <PositionToDepth>          <X>140</X>          <Y>203</Y>          <Depth>2988</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>280</X>          <Y>418</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>-0.231630847</X>          <Y>-0.9311304</Y>          <Z>2.96172214</Z>        </Position>        <JointType>FootLeft</JointType>        <TrackingState>Tracked</TrackingState>        <PositionToDepth>          <X>138</X>          <Y>210</Y>          <Depth>2962</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>275</X>          <Y>431</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>0.07490804</X>          <Y>0.01872996</Y>          <Z>2.96360135</Z>        </Position>        <JointType>HipRight</JointType>        <TrackingState>Tracked</TrackingState>        <PositionToDepth>          <X>167</X>          <Y>118</Y>          <Depth>2964</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>330</X>          <Y>265</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>0.115202829</X>          <Y>-0.496567756</Y>          <Z>2.99769115</Z>        </Position>        <JointType>KneeRight</JointType>        <TrackingState>Tracked</TrackingState>        <PositionToDepth>          <X>171</X>          <Y>167</Y>          <Depth>2998</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>336</X>          <Y>354</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>0.149258137</X>          <Y>-0.8660327</Y>          <Z>2.995776</Z>        </Position>        <JointType>AnkleRight</JointType>        <TrackingState>Tracked</TrackingState>        <PositionToDepth>          <X>174</X>          <Y>203</Y>          <Depth>2996</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>342</X>          <Y>419</Y>        </PositionToColor>      </Joint>      <Joint>        <Position>          <X>0.161565468</X>          <Y>-0.8981455</Y>          <Z>2.92454815</Z>        </Position>        <JointType>FootRight</JointType>        <TrackingState>Tracked</TrackingState>        <PositionToDepth>          <X>176</X>          <Y>208</Y>          <Depth>2925</Depth>          <PlayerIndex>0</PlayerIndex>        </PositionToDepth>        <PositionToColor>          <X>344</X>          <Y>428</Y>        </PositionToColor>      </Joint>    </Joints>    <ClippedEdges>None</ClippedEdges>  </Skeleton>  <Skeleton>    <TrackingState>NotTracked</TrackingState>    <TrackingId>0</TrackingId>    <Position>      <X>0</X>      <Y>0</Y>      <Z>0</Z>    </Position>    <ClippedEdges>None</ClippedEdges>  </Skeleton>  <Skeleton>    <TrackingState>NotTracked</TrackingState>    <TrackingId>0</TrackingId>    <Position>      <X>0</X>      <Y>0</Y>      <Z>0</Z>    </Position>    <ClippedEdges>None</ClippedEdges>  </Skeleton>  <Skeleton>    <TrackingState>NotTracked</TrackingState>    <TrackingId>0</TrackingId>    <Position>      <X>0</X>      <Y>0</Y>      <Z>0</Z>    </Position>    <ClippedEdges>None</ClippedEdges>  </Skeleton>  <Skeleton>    <TrackingState>NotTracked</TrackingState>    <TrackingId>0</TrackingId>    <Position>      <X>0</X>      <Y>0</Y>      <Z>0</Z>    </Position>    <ClippedEdges>None</ClippedEdges>  </Skeleton>  <Skeleton>    <TrackingState>NotTracked</TrackingState>    <TrackingId>0</TrackingId>    <Position>      <X>0</X>      <Y>0</Y>      <Z>0</Z>    </Position>    <ClippedEdges>None</ClippedEdges>  </Skeleton></ArrayOfSkeleton>