У меня есть файл XML, который я хотел бы визуально представить в виде дерева.Если бы я сделал это, мне пришлось бы использовать Jython, и в нашей системе была доступна только версия 2.5.0.У меня нет опыта работы с Java (и мне трудно его читать), но я немного знаком с Swing (через Jython) и слышал, что я мог бы сделать это с помощью JTree ().Я видел несколько примеров этого на Java Swing, но кто-нибудь знает о Jythonic способе сделать это?Пожалуйста, имейте в виду, что у меня есть только определенные парсеры XML, доступные в настоящее время - я в настоящее время использую один из них в xml.etree.ElementTree.
РЕДАКТИРОВАТЬ: я попытался немного поэкспериментировать с примером Чуй Тея и попытался это:
from java import awt
from javax import swing
from java.lang import System
from xml.etree import ElementTree
class XmlTreeModel(swing.tree.TreeModel):
def __init__(self, etree):
self.etree = etree
def getRoot(self):
return self.etree.getroot()
def getChildCount(self, object):
return len(object)
def getChild(self, parent, index):
return parent[index]
class Viewer(swing.JFrame):
def __init__(self):
super(Viewer, self).__init__()
def display(self, fileName):
xmlObject = ElementTree.parse(fileName)
xmlTreeModel = XmlTreeModel(xmlObject)
jTree = swing.JTree(xmlTreeModel)
self.contentPane.add(jTree)
self.contentPane.setPreferredSize( awt.Dimension(100, 200) )
self.setTitle("Tree")
self.pack()
self.setDefaultCloseOperation(swing.JFrame.DO_NOTHING_ON_CLOSE)
self.windowClosing = self.exit
self.setLocationRelativeTo(None)
self.setVisible(True)
def exit(self, event):
System.exit(0)
if __name__ == "__main__":
viewer = Viewer()
viewer.display('my.xml')
К сожалению, возникает исключение при достижении self.contentPane.add(xmlTreeModel)
, говоря:
TypeError: add (): 1-й аргумент не может быть приведен к java.awt.PopupMenu, java.awt.Component
Не могу ли я проверить это, просто добавив его в панель содержимого?
РЕДАКТИРОВАТЬ: Отсутствует JTree.Обновлен код с этим исправлением.