私はプログラミングの初心者で、Pythonを使用することはめったにないので、私がやろうとしていることを説明しようとしているので、我慢してください:)
私は次のXMLを持っています:
<?xml version = "1.0" encoding = "utf-8"?>
<Patients>
<Patient>
<PatientCharacteristics>
<patientCode>3</patientCode>
</PatientCharacteristics>
<Visits>
<Visit>
<DAS>
<CRP>14</CRP>
<ESR/>
<Joints>
<DAS_PROFILE>28/28</DAS_PROFILE>
<SWOL28>20</SWOL28>
<TEN28>20</TEN28>
</Joints>
</DAS>
<VisitDate>2010-02-17</VisitDate>
</Visit>
<Visit>
<DAS>
<CRP>10</CRP>
<ESR/>
<Joints>
<DAS_PROFILE>28/28</DAS_PROFILE>
<SWOL28>15</SWOL28>
<TEN28>20</TEN28>
</Joints>
</DAS>
<VisitDate>2010-02-10</VisitDate>
</Visit>
</Visits>
</Patient>
<Patient>
<PatientCharacteristics>
<patientCode>3</patientCode>
</PatientCharacteristics>
<Visits>
<Visit>
<DAS>
<CRP>14</CRP>
<ESR/>
<Joints>
<DAS_PROFILE>28/28</DAS_PROFILE>
<SWOL28>34</SWOL28>
<TEN28>0</TEN28>
</Joints>
</DAS>
<VisitDate>2010-08-17</VisitDate>
</Visit>
<Visit>
<DAS>
<CRP>10</CRP>
<ESR/>
<Joints>
<DAS_PROFILE>28/28</DAS_PROFILE>
<SWOL28></SWOL28>
<TEN28>2</TEN28>
</Joints>
</DAS>
<VisitDate>2010-07-10</VisitDate>
</Visit>
<Visit>
<DAS>
<CRP>9</CRP>
<ESR/>
<Joints>
<DAS_PROFILE>28/28</DAS_PROFILE>
<SWOL28>56</SWOL28>
<TEN28>6</TEN28>
</Joints>
</DAS>
<VisitDate>2009-07-10</VisitDate>
</Visit>
</Visits>
</Patient>
</Patients>
ここでやりたいのは、テキストファイルに保存したpatientCodeとVisitDateと一致する場合、特定の「SWOL28」値を更新することだけです。私が理解しているように、elementtreeには親参照が含まれていません。親参照が含まれている場合と同様に、ルートからfindall()を使用して、そこから逆方向に作業することができます。ここに立っているのは私の擬似コードです:
- テキストファイルの各行について:
- Visit_DatePatient_CodeNew_SWOL28を変数に入れます
- 各患者要素について:
- patientCode=Patient_Codeの場合
- 各Visit要素について:
- VisitDate=Visit_Dateの場合
- この訪問にSWOL28要素が存在する場合
- SWOL28をNew_SWOL28に更新します
しかし、私はステップ番号5で立ち往生しています。反復された訪問のリストを取得するにはどうすればよいですか?これが非常に馬鹿げた質問である場合はお詫びしますが、私はあなたに保証する答えを高低で検索しました!以下で修正する必要のある部分の裸の例にコードを削除しました。
import xml.etree.ElementTree as ET
tree = ET.parse('DB3.xml')
root = tree.getroot()
for child in root: # THIS GETS ME ALL THE PATIENT ATTRIBUTES
print child.tag
for x in child/Visit: # THIS IS WHAT I CANNOT FIND THE CORRECT SYNTAX FOR
# I WOULD THEN PERFORM STEPS 6, 7 AND 8 HERE
私はあなたの誰かがこれに関して持っているかもしれないどんな考えにも深く感謝するでしょう。私は確かに自然なプログラミングではありません!
よろしくお願いします、サラ
編集1:
以下のSVKのアドバイスで、私は次のことを試みました。
import xml.etree.ElementTree as ET
tree = ET.parse('Untitled.xml')
root = tree.getroot()
for child in root:
print child.tag
child.find( "visits" )
for x in child.iter("visit"):
print x.tag, x.text
しかし、私が得る唯一の出力は次のとおりです。患者患者と下のタグはありません。何か案は?