Altova XMLSpy 2024 Professional Edition

下方代码片段将一个XML数据对象作为节点在一个树状结构中加载。

 

 

01 // 访问必需的XMLSpy Java-COM类

02 import com.altova.automation.XMLSpy.XMLData;

03

04 // 访问AWT和Swing组件

05 import java.awt.*;

06 import javax.swing.*;

07 import javax.swing.tree.*;

08

09 /**

10  * 这是一个简单示例,展示了一个树控件从XMLData对象加载结构。

11  * 该类接收一个XMLData对象,将其节点加载到JTree中,并准备

12  * 进行模式激活。

13  *

14  * 请随意修改和扩展本示例。

15  *

16  * @author Altova GmbH

17  */

18 class XMLTreeDialog extends JDialog

19 {

20   /**

21    * 树控件

22    */

23   private JTree myTree;

24  

25   /**

26    * 树控件的根节点

27    */

28   private DefaultMutableTreeNode top ;

29

30   /**

31    * 构造器,用于准备包含填充树控件的模式对话框

32    * @param xml   要在树中展示的数据

33    * @param parent  父框架

34    */

35   public XMLTreeDialog( XMLData xml, Frame parent )

36   {

37     // 构造模式对话框

38     super( parent, "XML tree", true );

39     // 在对话框中排列控件

40     top = new DefaultMutableTreeNode("root");    

41     myTree = new JTree(top);

42     setContentPane( new JScrollPane( myTree ) );

43     // 构建树

44     fillTree( top, xml );

45     myTree.expandRow( 0 );

46   }

47

48   /**

49    * 在一个给定的树节点下加载一个XML元素的节点

50    * @param node  目标树节点

51    * @param elem  源XML元素

52    */

53   private void fillTree( DefaultMutableTreeNode node, XMLData elem)

54   {

55     try

56     {

57       // 有几种方法可以遍历子元素:使用getFirstChild/getNextChild,

58       // 或通过将索引递增到countChildren并调用getChild [如下所示]。

59       // 如果您只想获取一种类型的子元素,则应使用countChildrenKind/getChildKind,

60       // 或在用getNextChild进行遍历之前为getFirstChild提供一种类型。

61       int nSize = elem.countChildren() ;

62       for ( int i = 0 ; i < nSize ; ++i)

63       {

64         // 为每个子元素创建一个新的树节点,然后递归继续

65         XMLData newElem = elem.getChild(i) ;

66         DefaultMutableTreeNode newNode = new DefaultMutableTreeNode( newElem.getName() ) ;

67         node.add( newNode ) ;

68         fillTree( newNode, newElem ) ;

69       }

70     }

71     catch (Exception e)

72     {

73       e.printStackTrace();

74     }

75   }

76

77 }

 

© 2017-2023 Altova GmbH