如何在python中根据xml标签获取文本?

问题描述 投票:0回答:1

这里是新人!

任何人都可以帮我提取 XML 标签之间的文本 SAMPLE HEADING 吗?还有一种方法可以根据 XML 标签中的标题 1 到标题 6 提取文本吗?如果是,如何将其考虑在内? 下面是它的 XML 代码:

<w:p w:rsidR="00000000" w:rsidDel="00000000" w:rsidP="00000000" w:rsidRDefault="00000000" w:rsidRPr="00000000" w14:paraId="00000033">
<w:pPr>
<w:pStyle w:val="Heading2"/>
<w:numPr>
<w:ilvl w:val="0"/>
<w:numId w:val="1"/>
</w:numPr>
<w:ind w:left="520" w:hanging="360"/>
<w:rPr>
<w:b w:val="1"/>
<w:color w:val="000000"/>
</w:rPr>
</w:pPr>
<w:r w:rsidDel="00000000" w:rsidR="00000000" w:rsidRPr="00000000">
<w:rPr>
<w:b w:val="1"/>
<w:color w:val="000000"/>
<w:rtl w:val="0"/>
</w:rPr>
<w:t xml:space="preserve">SAMPLE HEADING</w:t>
</w:r>
</w:p>
python-3.x xml tags pattern-matching string-matching
1个回答
0
投票

您可以将 XML 文件作为字典读取,然后您可以根据 XML 文件的元素解析字典。

作为示例:

import xmltodict

with open('file.xml') as xml:
  data = xmltodict.parse(xml_file.read())
  xml_file.close()

这将从您的 XML 文件中生成一个有序字典:

OrderedDict([
  ('w:p', OrderedDict([
    ('@w:rsidR', '00000000'),
    ('@w:rsidDel', '00000000'),
    ('@w:rsidP', '00000000'),
    ('@w:rsidRDefault', '00000000'),
    ('@w:rsidRPr', '00000000'),
    ('@w14:paraId', '00000033'),
    ('w:pPr', OrderedDict([
      ('w:pStyle', OrderedDict([
        ('@w:val', 'Heading2')
      ])),
      ('w:numPr', OrderedDict([
        ('w:ilvl', OrderedDict([
          ('@w:val', '0')
        ])),
        ('w:numId', OrderedDict([
          ('@w:val', '1')
        ]))
      ])),
      ('w:ind', OrderedDict([
        ('@w:left', '520'),
        ('@w:hanging', '360')
      ])),
      ('w:rPr', OrderedDict([
        ('w:b', OrderedDict([
          ('@w:val', '1')
        ])),
        ('w:color', OrderedDict([
          ('@w:val', '000000')
        ]))
      ]))
    ])),
    ('w:r', OrderedDict([
      ('@w:rsidDel', '00000000'),
      ('@w:rsidR', '00000000'),
      ('@w:rsidRPr', '00000000'),
      ('w:rPr', OrderedDict([
        ('w:b', OrderedDict([
          ('@w:val', '1')
        ])),
        ('w:color', OrderedDict([
          ('@w:val', '000000')
        ])),
        ('w:rtl', OrderedDict([
          ('@w:val', '0')
        ]))
      ])),
      ('w:t', OrderedDict([
        ('@xml:space', 'preserve'),
        ('#text', 'SAMPLE HEADING')
      ]))
    ]))
  ]))
])

从本词典中,您可以通过以下方式访问示例标题:

data['w:p']['w:r']['w:t']['#text']

© www.soinside.com 2019 - 2024. All rights reserved.