次のような xml ファイルを取得して、moodle の成績表にインポートできるようにしようとしています。
<results>
<result>
<student>1</student>
<assignment>100</assignment>
<score>0</score>
</result>
<result>
<student>1</student>
<assignment>101</assignment>
<score>4</score>
</result>
<result>
<student>1</student>
<assignment>102</assignment>
<score>10</score>
</result>
<result>
<student>2</student>
<assignment>100</assignment>
<score>0</score>
</result>
<result>
<student>2</student>
<assignment>101</assignment>
<score>4</score>
</result>
<result>
<student>2</student>
<assignment>102</assignment>
<score>10</score>
</result>
</results>
私はPythonでいくつかのコードを書き込もうとしました.ドキュメントを熟読した後、私が思いつくことができる最高のものは次のとおりです:
import xml.etree.cElementTree as ET
students = [1,2]
assignments=[100,101,102]
scores=[0,4,10]
results = ET.Element("results")
result = ET.SubElement(results,"result")
student = ET.SubElement(result,"student")
assignment = ET.SubElement(result,"assignment")
score = ET.SubElement(result,"score")
for s in students:
for a in range(len(assignments)):
student.text = str(s)
assignment.text = str(assignments[a])
score.text = str(scores[a])
results.append(result)
tree = ET.ElementTree(results)
tree.write('test.xml')
これはほとんど私が望むものを与えてくれますが、最後のエントリは次のように以前のすべてのエントリを上書きするようです:
<results>
<result>
<student>2</student>
<assignment>102</assignment>
<score>10</score>
</result>
<result>
<student>2</student>
<assignment>102</assignment>
<score>10</score>
</result>
<result>
<student>2</student>
<assignment>102</assignment>
<score>10</score>
</result>
<result>
<student>2</student>
<assignment>102</assignment>
<score>10</score>
</result>
<result>
<student>2</student>
<assignment>102</assignment>
<score>10</score>
</result>
<result>
<student>2</student>
<assignment>102</assignment>
<score>10</score>
</result>
<result>
<student>2</student>
<assignment>102</assignment>
<score>10</score>
</result>
</results>
私は解決策を見つけようとしましたが、ほとんどの質問は、個別の要素を含む xml ファイルを作成することに対処しているようです。私が理解できないのは、同じ要素タグを使用する方法ですが、それぞれに異なる値を割り当てる方法です。