user3044923
user3044923

Reputation: 105

argument 1 has unexpected type error when parse xml with ElementTree

I use this code to make plugin in QGIS, i try to open xml from local drive, read it and then parse it and show specific information in QLine, this code i use:

from PyQt4 import QtCore, QtGui
from ui_testparse import Ui_testparse
import xml.etree.ElementTree as ETree
# create the dialog for zoom to point


class testparseDialog(QtGui.QDialog):
    def __init__(self):
        QtGui.QDialog.__init__(self)
        # Set up the user interface from Designer.
        self.ui = Ui_testparse()
        self.ui.setupUi(self)

        opendata = self.ui.btnCari
        QtCore.QObject.connect(opendata, QtCore.SIGNAL('clicked()'),self.openxml)

    def openxml(self, event=None):

        #open dialog
        openfile = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '*.xml')

        self.ui.lineLokasi.setText(openfile)

        #call XML data
        self.isiData(openfile)

    def isiData(self, nmsatu):
        #open teks with read mode
        openteks = open(nmsatu, 'r').read()

        self.ui.textXml.setText(openteks)

        #Parse XML from Above
        self.parsenow(openteks)

    def parsenow(self, parse):
        element = ETree.fromstring(parse)
        xml_obj = ETree.ElementTree(element)
        for title_obj in xml_obj.findall('.//{http://www.isotc211.org/2005/gmd}dateStamp/'
             '{http://www.isotc211.org/2005/gco}Date'):
            print element
        self.ui.lineSkala.setText(element)

But when i try to run it i get a error message says

Traceback (most recent call last):
  File "C:\Users\Mr.Pakde/.qgis2/python/plugins\testparse\testparsedialog.py", line 47, in openxml
    self.isiData(openfile)
  File "C:\Users\Mr.Pakde/.qgis2/python/plugins\testparse\testparsedialog.py", line 56, in isiData
    self.parsenow(openteks)
  File "C:\Users\Mr.Pakde/.qgis2/python/plugins\testparse\testparsedialog.py", line 64, in parsenow
    self.ui.lineSkala.setText(element)
TypeError: QLineEdit.setText(QString): argument 1 has unexpected type 'Element'

Python version:
2.7.4 (default, Apr  6 2013, 19:54:46) [MSC v.1500 32 bit (Intel)]

Can Someone help me solve this?

Upvotes: 1

Views: 861

Answers (1)

guido
guido

Reputation: 19194

element variable is of type Element, while setText() in QLineEdit requires a QString argument. When you:

print element

just before callin setText(), it is probably printing the string returned by the0 __repr__ method in the Element class

Upvotes: 1

Related Questions