I have a table and I want to download the data from a selected row in that table.
Is there any possible way to download data from that table as xml file?
Any help would be appreciated!
I have a table and I want to download the data from a selected row in that table.
Is there any possible way to download data from that table as xml file?
Any help would be appreciated!
Good morning Gerardo,
Yes, but you'll have to generate the XML piece by piece. I would use my helper script module for this kind of work: xml.py (Place it in your project script library.)
Make a somewhat generic row-to-xml function in a project library, perhaps like so:
rowTemplate = """<table><row/></table>"""
# Produce downloadable XML bytes from a dictionary of column values.
def rowToXML(valuesDict):
dom = xml.strToDoc(rowTemplate)
rowNode = dom.getElementsByTagName("row")[0]
for k, v in valuesDict.items():
cellNode = dom.createElement("cell")
cellNode.setAttribute("columnName", k)
cellNode.setTextContent(unicode(v))
rowNode.appendChild(cellNode)
return xml.docToBytes(dom)
Then, in your download button script, you'd have something like this:
output = myLibraryScript.rowToXML(xml.OrderedDict(self.path.to.row.mapping))
system.perspective.download("suggestedFilename.xml", output)
The path.to.row.mapping might just point at your table's selection data. It needs to be a single Perspective object mapping (key/value pairs). Though you could expand the example to handle multiple dictionaries.
Fundamentally, working with XML follows this model:
Start with some DOM, typically with a top level template,
Obtain a node to manipulate with a dom.getElement***()
Create a new node from the DOM, set its attributes, and append it to some other node.
Set content on nodes as needed.
Repeat as needed.
Transform the modified DOM to bytes or to a string for delivery.