Поскольку у меня нет прав администратора для установки lxml на моем компьютере, я буду использовать батарею (класс), которая включена в Python по умолчанию для работы с XPATH - xml.etree.ElementTree . Однако мой код покажет вам, как вставить несколько записей в SQLITE, используя executemany ()
Похоже, в C: / tools / XML у вас будет много xml-файлов одинаковой структуры.
Я поместил следующие два в папку, чтобы смоделировать это (я заметил, что ваш пример имеет 'curent' как элемент, не уверен, что это опечатка, я использую 'current')
file1.xml
<note>
<current name="Name">testname1</current>
<current name="Name">testname2</current>
<otherdetail></otherdetail>
</note>
file2.xml
<note>
<current name="Name">testname3</current>
<current name="Name">testname4</current>
<otherdetail></otherdetail>
</note>
Создан регистр базы данных sqlite с именем xml.db и таблица в нем со следующим оператором
CREATE TABLE PARSEE (NAME VARCHAR(100));
А вот и мой скрипт на питоне
import os
import xml.etree.ElementTree as ET
import sqlite3
conn = sqlite3.connect("xml.db")
cursor = conn.cursor()
path = 'C:/tools/XML'
for filename in os.listdir(path):
fullname = os.path.join(path, filename)
print("Parsing file: %s" %fullname)
tree = ET.parse(fullname)
root = tree.getroot()
elements = root.findall(".//*[@name='Name']");
names = [(e.text,) for e in elements]
print("Names found: %s" %names)
cursor.executemany("INSERT INTO PARSEE VALUES (?)", names)
conn.commit()
sql = "SELECT * FROM PARSEE"
print("Printing table PARSEE content")
cursor.execute(sql)
print(cursor.fetchall())
А вот и вывод
![enter image description here](https://i.stack.imgur.com/uunzl.png)