Python проверка на пустоту XML
Помогите пожалуйста как избавиться от ошибки:
ValueError: xpath does not return any nodes or attributes. Be sure to specify in
xpath
the parent nodes of children and attributes to parse. If document uses namespaces denoted with xmlns, be sure to define namespaces and use them in xpath.
Не могу понять как проверить файл на пустоту как в пример моего XML и кода ниже.
Приходит пустой XML, из-за него я получаю ошибку.
<?xml version="1.0" encoding="UTF-8"?> <table/>
Код:
import pandas as pd
import xml.etree.ElementTree as ET
def READ_XML():
DATA_TODAY = datetime.datetime.now() #определяем текущую дату и время
file_path = r'C:\xxx\xxx2\1' #директория с файлом
NAME_FILE = os.listdir(file_path)[0]# получение названия файла в директроии
file_path2 = r'C:\xxx\xxx2\1\{}'.format(NAME_FILE)
try:
tree = ET.parse(file_path2)
XML_ERROR = 'OK'
print(XML_ERROR)
XML_FILE = pd.read_xml(file_path2) # чтение хмл
except ET.ParseError:
XML_ERROR = 'BAD'
print(XML_ERROR)
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
Просто проверяйте на наличие элементов в XML перед попыткой его парсинга.
import pandas as pd
import xml.etree.ElementTree as ET
import os
import datetime
def READ_XML():
DATA_TODAY = datetime.datetime.now() # определяем текущую дату и время
file_path = r'C:\Users\Amgarak\Desktop\xml' # директория с файлом
NAME_FILE = os.listdir(file_path)[0] # получение названия файла в директории
print(NAME_FILE)
file_path2 = r'C:\Users\Amgarak\Desktop\xml\{}'.format(NAME_FILE)
try:
tree = ET.parse(file_path2)
root = tree.getroot()
if len(root) == 0 and not root.attrib:
XML_ERROR = 'BAD TREE'
print(XML_ERROR)
else:
XML_ERROR = 'OK'
print(XML_ERROR)
XML_FILE = pd.read_xml(file_path2)
except ET.ParseError:
XML_ERROR = 'PARSE BAD'
print(XML_ERROR)
READ_XML()