Ich habe folgendes Script:
Code: Alles auswählen
# -*- coding: utf-8 -*-
'''
Created on 11.04.2012
@author: SzaboP
'''
import os
import MySQLdb
import traceback
from lxml import etree
def connect():
mysql_opts = {
'host': "xxx",
'user': "xxx",
'pass': "xxx",
'db': "xxx"
}
mysql = MySQLdb.connect(mysql_opts['host'], mysql_opts['user'], mysql_opts['pass'], mysql_opts['db'])
return mysql
def mainArtikel(folder, targetpath):
try:
#Variablen die wir brauchen
dbconnection = connect()
cursor = dbconnection.cursor()
parser = etree.XMLParser(recover=True, resolve_entities=False)
for dirpath, dirname, filenames in os.walk(folder):
try:
for file in filenames:
#print(file)
filepath = os.path.join(dirpath, file)
filetargetpath = os.path.join(targetpath + "%s" %file)
#Hole entsprechende Autoren aus der DB
cursor.execute("Select output FROM documents WHERE filename='%s'" % file)
authorstring = cursor.fetchone()
if not(authorstring):
continue
#print("Da hol ich doch was...")
fileasxml = etree.parse(filepath, parser)
print(etree.tostring(fileasxml))
#Wir muessen hier ersetzen und was zum Trennen einbauen, sonst kommt etree damit nicht klar.
authorstring = authorstring[0].replace(">", ">;")
elements = []
for authorstr in authorstring.split(";"):
try:
dbauthorelement = etree.XML(authorstr.strip())
elements.append(dbauthorelement)
except:
continue
#Loesche evtl. vorhandene meta_autor - Tags
for elems in fileasxml.xpath("//meta_autor"):
elems.getparent().remove(elems)
for elem in elements:
authornew = etree.Element("meta_autor")
vorname = etree.SubElement(authornew, "vorname")
vorname.text = elem.get("fn")
nachname = etree.SubElement(authornew, "nachname")
nachname.text = elem.get("ln")
authornew.set("rolle", "autor")
fileasxml.xpath("//meta")[0].append(authornew)
fileasxml.write(filetargetpath, xml_declaration=True, encoding="UTF-8")
except:
print(traceback.format_exc())
except:
print(traceback.format_exc())
Es scheint so als parst er das file schon so ein, also print(etree.tostring(fileasxml)) enthält dieses Zeichen auch schon.
Auszug aus xml:
input:
Code: Alles auswählen
<bibliographie>
<zeitschrift alternativ="ÖBl-LS">ÖBl</zeitschrift>
<jahrgang>2002</jahrgang>
<ausgabe datumstyp="offiziell" erscheinungsdatum="01.03.2002" art="Heft">2</ausgabe>
<seite-von>63</seite-von>
<seite-bis>63</seite-bis>
<artikel-nr>32</artikel-nr>
<autor>Helmut Gamerith</autor>
<verknuepfung-mit-urteil akz-senat="4" akz-lfd-nummer="261" datum="13.11.2001" akz-jahr="01"
gericht="OGH" akz-registerzeichen="Ob"/>
</bibliographie>
Code: Alles auswählen
<bibliographie>
Ö<zeitschrift alternativ="Bl-LS">ÖBl</zeitschrift>
<jahrgang>2002</jahrgang>
<ausgabe datumstyp="offiziell" erscheinungsdatum="01.03.2002" art="Heft">2</ausgabe>
<seite-von>63</seite-von>
<seite-bis>63</seite-bis>
<artikel-nr>32</artikel-nr>
<autor>Helmut Gamerith</autor>
<verknuepfung-mit-urteil akz-senat="4" akz-lfd-nummer="261" datum="13.11.2001" akz-jahr="01" gericht="OGH" akz-registerzeichen="Ob"/>
</bibliographie>
Ist vermutlich ein encoding Problem, aber da sollten doch auch keine Zeichen auftauchen Oo
Danke im Vorraus!