如何使用python中的minidom解析带有属性的xml文件?

时间:2014-05-17 09:44:53

标签: python xml minidom

好吧,我有一个带有属性的xml文件,让我们说:

    <Chapter ChapterID="1" ChapterName="الفاتحة">
     <Verse VerseID="1"><![CDATA[بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ]]></Verse>
     <Verse VerseID="2"><![CDATA[الْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ]]></Verse>
     <Verse VerseID="3"><![CDATA[الرَّحْمَٰنِ الرَّحِيمِ]]></Verse>
     <Verse VerseID="4"><![CDATA[مَالِكِ يَوْمِ الدِّينِ]]></Verse>
     <Verse VerseID="5"><![CDATA[إِيَّاكَ نَعْبُدُ وَإِيَّاكَ نَسْتَعِينُ]]></Verse>
     <Verse VerseID="6"><![CDATA[اهْدِنَا الصِّرَاطَ الْمُسْتَقِيمَ]]></Verse>
     <Verse VerseID="7"><![CDATA[صِرَاطَ الَّذِينَ أَنْعَمْتَ عَلَيْهِمْ غَيْرِ الْمَغْضُوبِ عَلَيْهِمْ وَلَا الضَّالِّينَ]]></Verse>
    </Chapter>

我使用minidom如下(quran.xml是上面的xml文件):

from xml.dom import minidom 
quran = minidom.parse(quran.xml)

好吧,我如何使用其ChapterID解析第一章标签,并摆脱[CDATA]。非常感谢你。

1 个答案:

答案 0 :(得分:0)

要访问第一章的名称,您可以执行以下操作:

chapter_number = 1
chapters = quran.getElementsByTagName('Chapter')
for chapter in chapters:
    if chapter.attributes['ChapterID'].value == str(chapter_number):
        print(chapter.attributes['ChapterName'].value)

要访问verses中的chapter,请添加:

        for verse in chapter.getElementsByTagName('Verse'):
            print(verse.attributes['VerseID'].value)
            print(verse.childNodes[0].data)