我有一个xml文件。
看起来像
<root>
<Group>
<ChapterNo>1</ChapterNo>
<ChapterName>A</ChapterName>
<Line>1</Line>
<Content>zfsdfsdf</Content>
<Synonyms>fdgd</Synonyms>
<Translation>assdfsdfsdf</Translation>
</Group>
<Group>
<ChapterNo>1</ChapterNo>
<ChapterName>A</ChapterName>
<Line>2</Line>
<Content>ertreter</Content>
<Synonyms>retreter</Synonyms>
<Translation>erterte</Translation>
</Group>
<Group>
<ChapterNo>2</ChapterNo>
<ChapterName>B</ChapterName>
<Line>1</Line>
<Content>sadsafs</Content>
<Synonyms>sdfsdfsd</Synonyms>
<Translation>sdfsdfsd</Translation>
</Group>
<Group>
<ChapterNo>2</ChapterNo>
<ChapterName>B</ChapterName>
<Line>2</Line>
<Content>retete</Content>
<Synonyms>retertret</Synonyms>
<Translation>retertert</Translation>
</Group>
</root>
我尝试过这种方式.......
root = ElementTree.parse('data.xml').getroot()
ChapterNo = root.find('ChapterNo').text
ChapterName = root.find('ChapterName').text
GitaLine = root.find('Line').text
Content = root.find('Content').text
Synonyms = root.find('Synonyms').text
Translation = root.find('Translation').text
但是显示错误
ChapterNo=root.find('ChapterNo').text
AttributeError: 'NoneType' object has no attribute 'text'`
现在我想获取所有的ChapterNo,ChapterName等,分别使用元素树,我想将这些数据插入数据库中。...有人可以帮助我吗?
Rgds,
尼米
最佳答案
要解析简单的两级数据结构并为每个组组合一个字典,您需要做的是:
>>> # what you did to get `root`
>>> from pprint import pprint as pp
>>> for group in root:
... d = {}
... for elem in group:
... d[elem.tag] = elem.text
... pp(d) # or whack it ito a database
...
{'ChapterName': 'A',
'ChapterNo': '1',
'Content': 'zfsdfsdf',
'Line': '1',
'Synonyms': 'fdgd',
'Translation': 'assdfsdfsdf'}
{'ChapterName': 'A',
'ChapterNo': '1',
'Content': 'ertreter',
'Line': '2',
'Synonyms': 'retreter',
'Translation': 'erterte'}
{'ChapterName': 'B',
'ChapterNo': '2',
'Content': 'sadsafs',
'Line': '1',
'Synonyms': 'sdfsdfsd',
'Translation': 'sdfsdfsd'}
{'ChapterName': 'B',
'ChapterNo': '2',
'Content': 'retete',
'Line': '2',
'Synonyms': 'retertret',
'Translation': 'retertert'}
>>>
瞧,妈,没有xpath!