解析xml文件并将数据存储在数据库中

Posted

技术标签:

【中文标题】解析xml文件并将数据存储在数据库中【英文标题】:parse xml file and store data in database 【发布时间】:2016-06-30 07:24:17 【问题描述】:
import mysqldb
from xml.dom import minidom
import xml.dom.minidom

xmldoc = xml.dom.minidom.parse("Country.xml")

country= xmldoc.getElementsByTagName("country")[0]

sensors = country.getElementsByTagName("sensor")

for sensor in sensors:
    Translation = sensor.getElementsByTagName("Translation")[0].firstChild.data
    Name = sensor.getElementsByTagName("Name")[0].firstChild.data
    Prefix = sensor.getElementsByTagName("Prefix")[0].firstChild.data
    Percentage = sensor.getElementsByTagName("Percentage")[0].firstChild.data
    Position = sensor.getElementsByTagName("Position")[0].firstChild.data

    db = MySQLdb.connect("localhost","root","akshay","country")

# prepare a cursor object using cursor() method
cursor = db.cursor()

# Drop table if it already exist using execute() method.
cursor.execute("DROP TABLE IF EXISTS country_table")

# Create table as per requirement
sql = """CREATE TABLE country_table (_
         Translation  VARCHAR(20) NOT NULL,
         Name  VARCHAR(20) NOT NULL,
         Prefix INT(5) NOT NULL,  
         Percentage INT(3) NOT NULL,
         Position INT(3) NOT NULL
          )"""

sql1= ("INSERT INTO country_table(Translation, Name, Prefix, Percentage,Position) VALUES(%s, %s, %s, %s,%s)"
   %(Translation, Name, Prefix, Percentage,Position))

try:
   # Execute the SQL command

     cursor.execute(sql1)

except:
   # Rollback in case there is any error
   db.rollback()

# disconnect from server
db.close()

我收到以下错误:

Traceback(最近一次调用最后一次):文件“test.py”,第 5 行,在 xmldoc = xml.dom.minidom.parse("Country.xml") 文件 "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/dom/minidom.py", 第 1918 行,解析中 返回 expatbuilder.parse(file) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/dom/expatbuilder.py”, 第 924 行,解析中 结果 = builder.parseFile(fp) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/dom/expatbuilder.py”, 第 211 行,在 parseFile 中 parser.Parse("", True) xml.parsers.expat.ExpatError: no element found: line 43, column 0

请帮忙。

【问题讨论】:

你能发布 XML 文件吗? i.stack.imgur.com/af5MP.png 【参考方案1】:

您还没有关闭 Origination 和 Transaction 标签,只需关闭它们,它应该可以正常工作。

【讨论】:

以上是关于解析xml文件并将数据存储在数据库中的主要内容,如果未能解决你的问题,请参考以下文章

解析 XML 并存储在 Hive 表中

在 AS3 中为游戏存储 XML 数据的最佳方式

odoo 在哪里解析 xml 文件以将它们存储在数据库中?

数据存储--xml

Python每日一练——数据存储第二关:XML文档和字典的互转

将 XML 审计数据存储到文件系统或 MS Access 表?