我有一个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!

07-28 00:46