|
преобразовать XML с помощью XSL и отобразить в JTree
|
|||
---|---|---|---|
#18+
есть XML файл: Tree.xml <?xml version="1.0" encoding="UTF-8"?> <schema xmlns=" http://www.w3.org/2001/XMLSchema" targetNamespace=" http://www.example.org/ldapShemTree" xmlns:tns=" http://www.example.org/ldapShemTree" elementFormDefault="qualified"> <element name="server" type="tns:server"></element> <complexType name="server"> <sequence> <element name="instance" type="tns:instance" minOccurs="1" maxOccurs="unbounded"></element> </sequence> </complexType> <complexType name="instance"> <sequence> <element name="rootDSE" type="tns:rootDSE" minOccurs="1" maxOccurs="1"> </element> </sequence> </complexType> <complexType name="rootDSE"> <sequence> <element name="entry" type="tns:entry" minOccurs="1" maxOccurs="unbounded"></element> <element name="distinguishedName" type="tns:distinguishedName" minOccurs="1" maxOccurs="1"> </element> <element name="structuralobjectClass" type="string" minOccurs="1" maxOccurs="1"></element> <element name="attribute" type="tns:attribute" minOccurs="1" maxOccurs="unbounded"></element> </sequence> </complexType> <complexType name="entry"> <sequence> <element name="distinguishedName" type="tns:distinguishedName" minOccurs="1" maxOccurs="1"> </element> <element name="structuralobjectClass" type="tns:objectClass" minOccurs="1" maxOccurs="1"> </element> <element name="attribute" type="tns:attribute" minOccurs="1" maxOccurs="unbounded"> </element> <element name="auxiliaryObjectClass" type="tns:objectClass" minOccurs="1" maxOccurs="unbounded"> </element> <element name="abstractObjectClass" type="tns:objectClass" minOccurs="1" maxOccurs="unbounded"> </element> </sequence> </complexType> <complexType name="distinguishedName"> <sequence> <element name="relativeDistinguishedName" type="tns:relativeDistinguishedName" minOccurs="1" maxOccurs="unbounded"> </element> </sequence> </complexType> <complexType name="relativeDistinguishedName"> <sequence> <element name="nameValuePair" type="tns:nameValuePair" minOccurs="1" maxOccurs="unbounded"></element> </sequence> </complexType> <complexType name="nameValuePair"> <attribute name="name" type="string"></attribute> <attribute name="value" type="string"></attribute> </complexType> <complexType name="attribute"></complexType> <complexType name="objectClass"></complexType> </schema> Java файл: XMLTree.java public class XMLTree implements TreeModel { private org.w3c.dom.Document doc; public XMLTree (org.w3c.dom.Document doc){ this.doc = doc; } public Object getRoot(){ return doc.getDocumentElement(); } public int getChildCount(Object parent){ Node node = (Node) parent; NodeList list = node.getChildNodes(); return list.getLength(); } public Object getChild(Object parent, int index){ Node node = (Node) parent; NodeList list = node.getChildNodes(); return list.item(index); } public int getIndexOfChild(Object parent, Object child){ Node node = (Node) parent; NodeList list = node.getChildNodes(); for (int i = 0; i < list.getLength(); i++) if (getChild(node, i) == child) return i; return -1; } public void addTreeModelListener(TreeModelListener l) {} public boolean isLeaf(Object node) { return getChildCount(node) == 0; } public void removeTreeModelListener(TreeModelListener l) {} public void valueForPathChanged(TreePath path, Object newValue) {} } DOMTreeTest.java public class DOMTreeTest extends JFrame { JTree tree; org.w3c.dom.Document doc; DocumentBuilder docBuilder; public DOMTreeTest(){ this.setTitle("DefaultTreeModelDemo"); setLayout(new BorderLayout()); this.setBounds(350,150,400,400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); DrawTree(); setVisible(true); } public void DrawTree(){ DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); try { docBuilder = docBuilderFactory.newDocumentBuilder(); } catch (ParserConfigurationException e) { } try { doc = docBuilder.parse("files/Tree.xml"); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } String s1=doc.getLocalName(); tree = new JTree(); JTree tree = new JTree(new XMLTree(doc)); JScrollPane s = new JScrollPane(tree); this.getContentPane().add(s,BorderLayout.CENTER); } public static void main(String[]args){ new DOMTreeTest(); } } вот JTree.xml нужно преобразовать с помощью XSL в такой вид, чтобы отпарсеный файл «doc = docBuilder.parse("files/Tree.xml")», передав в «JTree tree = new JTree(new XMLTree(doc))», корректно отображал иерархию XML файла в JTree. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2010, 21:40 |
|
|
start [/forum/topic.php?fid=14&fpage=31&tid=1333058]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
2ms |
others: | 18ms |
total: | 140ms |
0 / 0 |