I've been working on a script for a couple of days that will retrieve tags inside an XML file and output their values to a message box. Originally I was going to use Tkinter but I noticed that it would only print one set of tags, so I tried using easygui and I had the same problem.
I have quite a bit of experience with programming but I'm newer to python, I did several searches on google but nothing turned up so I thought I'd ask here.
Here's the part of the code that's acting up.
# Import our modules here.
import easygui as eg
import lxml.etree as etree
# Get our XML file here.
doc = etree.parse('file.xml')
# Grab the item tag and display the child tags name, description, and status.
for item in doc.getiterator('item'):
item_name = item.findtext('name')
item_desc = item.findtext('description')
item_status = item.findtext('status')
# Create a variable that adds the above child tags together.
print_xml = str((item_name + " | " + item_desc + " | " + item_status))
# Create message box to display print_xml.
eg.msgbox(print_xml, title="XML Reader")
Thanks in advance!
That last line of yours: eg.msgbox(...) is indented at the same level as the lines within your 'item' loop. So, it is executed for each entry.
If you want all entries displayed at once, create a list of entries inside that loop, then combine that list into a string. outside of the loop
The following code is similar to yours except that I used a different .xml schema so needed to change it a bit.
Note the creation of a list called 'books' to hold what you called print_xml. That list is .appended to. Finally '\n'.join(books) is used to convert that list into a string with newlines separating each item.