В конце файла XML с использованием ElementTree не найдено ни одного элемента - PullRequest
0 голосов
/ 08 июля 2020

Python newb ie здесь. Я просто практикуюсь в извлечении определенных элементов из файлов XML. Я просматриваю этот учебник Datacamp и пытаюсь проанализировать файл "movies" XML, указанный в начале руководства.

Это выглядит так:

<?xml version="1.0"?>
<collection>
    <genre category="Action">
        <decade years="1980s">
            <movie favorite="True" title="Indiana Jones: The raiders of the lost Ark">
                <format multiple="No">DVD</format>
                <year>1981</year>
                <rating>PG</rating>
                <description>
                'Archaeologist and adventurer Indiana Jones 
                is hired by the U.S. government to find the Ark of the 
                Covenant before the Nazis.'
                </description>
            </movie>
               <movie favorite="True" title="THE KARATE KID">
               <format multiple="Yes">DVD,Online</format>
               <year>1984</year>
               <rating>PG</rating>
               <description>None provided.</description>
            </movie>
            <movie favorite="False" title="Back 2 the Future">
               <format multiple="False">Blu-ray</format>
               <year>1985</year>
               <rating>PG</rating>
               <description>Marty McFly</description>
            </movie>
        </decade>
        <decade years="1990s">
            <movie favorite="False" title="X-Men">
               <format multiple="Yes">dvd, digital</format>
               <year>2000</year>
               <rating>PG-13</rating>
               <description>Two mutants come to a private academy for their kind whose resident superhero team must 
               oppose a terrorist organization with similar powers.</description>
            </movie>
            <movie favorite="True" title="Batman Returns">
               <format multiple="No">VHS</format>
               <year>1992</year>
               <rating>PG13</rating>
               <description>NA.</description>
            </movie>
               <movie favorite="False" title="Reservoir Dogs">
               <format multiple="No">Online</format>
               <year>1992</year>
               <rating>R</rating>
               <description>WhAtEvER I Want!!!?!</description>
            </movie>
        </decade>    
    </genre>

    <genre category="Thriller">
        <decade years="1970s">
            <movie favorite="False" title="ALIEN">
                <format multiple="Yes">DVD</format>
                <year>1979</year>
                <rating>R</rating>
                <description>"""""""""</description>
            </movie>
        </decade>
        <decade years="1980s">
            <movie favorite="True" title="Ferris Bueller's Day Off">
                <format multiple="No">DVD</format>
                <year>1986</year>
                <rating>PG13</rating>
                <description>Funny movie about a funny guy</description>
            </movie>
            <movie favorite="FALSE" title="American Psycho">
                <format multiple="No">blue-ray</format>
                <year>2000</year>
                <rating>Unrated</rating>
                <description>psychopathic Bateman</description>
            </movie>
        </decade>
    </genre>

Я понимаю, что я должен добавить </collection> в конце, чтобы проанализировать файл. Однако я все еще получаю сообщение об ошибке: xml .etree.ElementTree.ParseError: элемент не найден: строка 74, столбец 12

При запуске кода

import os
import pandas as pd
import xml.etree.ElementTree as ET
tree = ET.parse('movies.xml')

Последний Элемент "жанр" закрыт неправильно? Я не уверен, почему я не могу разобрать файл. Любая помощь приветствуется - спасибо!

1 Ответ

0 голосов
/ 09 июля 2020

Ненужный оператор изменения каталога операционной системы после импорта пакетов и до анализа XML файла.

Код, вызывающий ошибку:

import os
import pandas as pd
import xml.etree.ElementTree as ET
os.chdir('filepath')
tree = ET.parse('movies.xml')
root = tree.getroot()

После удаления оператора os.chdir он анализируется без ошибок.

...