Table of Contents
Visualization of XML documents
A class that reads and writes XML files
Conclusion
Home Backend Development XML/RSS Tutorial How to convert between XML documents and JTree

How to convert between XML documents and JTree

May 07, 2017 pm 02:08 PM

XMLBecause of its good structure, it is widely used in the definition of document formats. We know that application software generally needs to use configuration file to determine some parameters during runtime. The configuration file of previous applications was generally an .ini file. Although ini files are still in use today, due to the emergence of XML, more and more commercial software is using XML as the configuration file format, such as BEA's Weblogic and IBM's Websphere. Therefore, when we design a software configuration file, we will increasingly consider using XML as the format of the configuration file.

Because configuration files sometimes must be modified by users, providing a visual format for editing configuration files is a reflection of the software's good user interactivity. We must find a visual method for XML documents. The JTree in the Swing component in the Java language is very suitable for the visualization of XML documents. There is a very convenient conversion method between the two. This means that we can easily display the user's operations on the JTree as modifications in the XML file after saving, and we can also conveniently display the XML file as a JTree to the user.

Visualization of XML documents

An XML document is actually a tree structure. For example, the following XML document:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<?xml version=“1.0”encoding=“GB2312”?>

<skin>

  <skin1>

    <name>古典</name>

    <dir>d:\software\App\skin</dir>

    <head>head1.bmp</head>

    <center>center1.bmp</center>

    <foot>foot1.bmp</foot>

  </skin1>

<skin2>

    <name>现代</name>

    <dir>d:\software\App\skin</dir>

    <head>head2.bmp</head>

    <center>center2.bmp</center>

    <foot>foot2.bmp</foot>

  </skin2>

</skin>

Copy after login

It can be seen that the XML document is the interface of a multi-interface program PictureConfiguration program. If the XML document is visualized, then JTree should be used What is obtained is the result shown in the figure below.

How to convert between XML documents and JTree

Figure Visualization results

All XML documents can generate such a Jtree. Using XML's Parser and the JTree class in Java, a general visual XML document can be constructed to form a JTree. The result of the XML document parsing by XML Parser is to generate a DOM (Document Object Model) tree. The structure of the DOM tree is actually the same as the structure of the JTree. , which makes the cooperation between JTree and XML Parser very natural. Here’s how to do it.

A class that reads and writes XML files

First you must obtain the XML Parser package, which can be obtained from the following address: http://xml.apache.org/xerces2-j/index. html.
Then design an XMLTree class, inherit from the definition and members of the JTree class variables , functions are defined as follows:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

public class XMLTree extends JTree{  

    private           DefaultMutableTreeNode      treeNode;  //JTree的根节点

    private           DocumentBuilderFactory     dbf;

    // 这三个成员变量是xml parser需要的

    private           DocumentBuilder         db;

    private           Document              doc; 

    XMLTree(String fileName); 

    //构造函数,做初始化工作

    public DefaultMutableTreeNode LoadFile(Node root);    

    //从某个XML文件生成该树

    public void SaveToFile(DefaultMutableTreeNode root,FileWriter fw);    

    //将该树存盘成XML文件

    private Node parseXml( String text )

}

Copy after login

where The initialization work done by the constructor is as follows:

1

2

3

4

5

6

7

8

9

10

XMLTree(String fileName){

      dbf = DocumentBuilderFactory.newInstance();

      //生成dbf的实例

      db = dbf.newDocumentBuilder(); 

      //生成db的实例

      treeNode = LoadFile( getXMLRoot( text ) ); 

      //解析该xml文件,返回JTree的根节点

      setModel( new DefaultTreeModel( treeNode ) ); 

      //根据该根节点生成JTree

}

Copy after login

Among them, parseXml is a program that returns the root element of the XML file, as follows:

1

2

3

4

5

6

7

8

9

10

11

12

private Node getXMLRoot( String text ){

         ByteArrayInputStream    byteStream;

         byteStream = new ByteArrayInputStream( text.getBytes() );

         //将XML文件读到Stream里去

         try{

           doc = db.parse( byteStream ); 

           //解析该xml文件。

         } catch ( Exception e )

         { e.printStackTrace();}

         return ( Node )doc.getDocumentElement();

            //返回该XML文件的DOM树的根元素

}

Copy after login

The core part of LoadFile is a recursionThe process is as follows:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

private DefaultMutableTreeNode createTreeNode( Node root ){

      DefaultMutableTreeNode  treeNode = null;

         //定义要返回的根节点

      String name = root.getNodeName();

         //获得该节点的NodeName

         String value = root.getNodeValue();

         //获得该节点的NodeValue

     treeNode = new DefaultMutableTreeNode( root.

getNodeType() == Node.TEXT_NODE ? value : name );

      //如果为值节点,那么取得该节点的值,否则取得该节点的Tag的名字

      if ( root.hasChildNodes() )

      //如果该节点有孩子节点,那么递归处理该节点的孩子节点

      {  NodeList children = root.getChildNodes(); 

        //取得该节点的子节点列表

         if( children != null ){      

         //判断子节点是否为空

          int numChildren = children.getLength(); 

           //取得字节数目

            for (int i=0; i < numChildren; i++){ 

               Node node = children.item(i);

                  //循环处理每个子节点

               if( node != null )

               if( node.getNodeType() == Node.ELEMENT_NODE )

                  { treeNode.add( createTreeNode(node) );

                  //如果该子节点还有孩子节点使用递归的方法处理该子节点

                  } else {

                 String data = node.getNodeValue();

                  if( data != null )

                  {

                     data = data.trim();

                     if ( !data.equals(“\n”) && !data.equals(“\r\n”) &&

data.length() > 0 )

                     {    treeNode.add(new

DefaultMutableTreeNode(node.getNodeValue()));

                       //如果该节点没有孩子节点,那么直接加到节点下

                       }  

                   

                 }

               }

            }

         }

      }

      return treeNode;  //返回节点 }

Copy after login

You can easily make changes on the JTree using the methods in Java's Swing package. You can use the pop-up dialog box method, or you can make changes directly on the JTree. In short, after the JTree is changed, it needs to be written back to the file. Writing a JTree into an XML file is a recursive process. The method is as follows:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

public void SaveToFile(DefaultMutableTreeNode, FileWriter fw)

    {try {

      if (root.isLeaf()) fw.write(root.toString()+“\r\n”);

//如果是叶子节点则直接将该节点输出到文件中

     else { //不是叶子节点的话递归输出该节点

      fw.write(“<”+root.toString()+“>\r\n”);

     for (int i=0; i < root.getChildCount(); i++)

       { DefaultMutableTreeNode childNode =(DefaultMutableTreeNode)

root.getChildAt(i);

         saveFile(childNode, fw);

         //递归输出该节点的所有子节点 }

   fw.write(“</”+root.toString()+“>\r\n”);

    }

      } catch (Exception e)

      {  e.printStackTrace();

      } }

Copy after login

It must be noted that if the XML file contains Chinese, then it needs to Before calling the above function, enter the encoding method of the XML file in the file as follows:

1

fw.write(“<?xml version=“1.0” encoding=“GB2312”?>\r\n”);

Copy after login

After calling the function, you should also close the file as follows:

1

fw.close()

Copy after login

Conclusion

XML files are widely used in configuration files and information transmission. There are many visualization methods. This article introduces one of the implementation methods by combining Java's JTree class. The good combination of Java language and XML makes it flexible and convenient to use Java to compile XML programs.

The above is the detailed content of How to convert between XML documents and JTree. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1666
14
PHP Tutorial
1273
29
C# Tutorial
1253
24
XML's Advantages in RSS: A Technical Deep Dive XML's Advantages in RSS: A Technical Deep Dive Apr 23, 2025 am 12:02 AM

XML has the advantages of structured data, scalability, cross-platform compatibility and parsing verification in RSS. 1) Structured data ensures consistency and reliability of content; 2) Scalability allows the addition of custom tags to suit content needs; 3) Cross-platform compatibility makes it work seamlessly on different devices; 4) Analytical and verification tools ensure the quality and integrity of the feed.

Building Feeds with XML: A Hands-On Guide to RSS Building Feeds with XML: A Hands-On Guide to RSS Apr 14, 2025 am 12:17 AM

The steps to build an RSSfeed using XML are as follows: 1. Create the root element and set the version; 2. Add the channel element and its basic information; 3. Add the entry element, including the title, link and description; 4. Convert the XML structure to a string and output it. With these steps, you can create a valid RSSfeed from scratch and enhance its functionality by adding additional elements such as release date and author information.

RSS Documents: How They Deliver Your Favorite Content RSS Documents: How They Deliver Your Favorite Content Apr 15, 2025 am 12:01 AM

RSS documents work by publishing content updates through XML files, and users subscribe and receive notifications through RSS readers. 1. Content publisher creates and updates RSS documents. 2. The RSS reader regularly accesses and parses XML files. 3. Users browse and read updated content. Example of usage: Subscribe to TechCrunch's RSS feed, just copy the link to the RSS reader.

Beyond the Basics: Advanced RSS Document Features Beyond the Basics: Advanced RSS Document Features Apr 21, 2025 am 12:03 AM

Advanced features of RSS include content namespaces, extension modules, and conditional subscriptions. 1) Content namespace extends RSS functionality, 2) Extended modules such as DublinCore or iTunes to add metadata, 3) Conditional subscription filters entries based on specific conditions. These functions are implemented by adding XML elements and attributes to improve information acquisition efficiency.

Decoding RSS: The XML Structure of Content Feeds Decoding RSS: The XML Structure of Content Feeds Apr 17, 2025 am 12:09 AM

The XML structure of RSS includes: 1. XML declaration and RSS version, 2. Channel (Channel), 3. Item. These parts form the basis of RSS files, allowing users to obtain and process content information by parsing XML data.

Creating RSS Documents: A Step-by-Step Tutorial Creating RSS Documents: A Step-by-Step Tutorial Apr 13, 2025 am 12:10 AM

The steps to create an RSS document are as follows: 1. Write in XML format, with the root element, including the elements. 2. Add, etc. elements to describe channel information. 3. Add elements, each representing a content entry, including,,,,,,,,,,,. 4. Optionally add and elements to enrich the content. 5. Ensure the XML format is correct, use online tools to verify, optimize performance and keep content updated.

RSS in XML: Unveiling the Core of Content Syndication RSS in XML: Unveiling the Core of Content Syndication Apr 22, 2025 am 12:08 AM

The implementation of RSS in XML is to organize content through a structured XML format. 1) RSS uses XML as the data exchange format, including elements such as channel information and project list. 2) When generating RSS files, content must be organized according to specifications and published to the server for subscription. 3) RSS files can be subscribed through a reader or plug-in to automatically update the content.

RSS in XML: Decoding Tags, Attributes, and Structure RSS in XML: Decoding Tags, Attributes, and Structure Apr 24, 2025 am 12:09 AM

RSS is an XML-based format used to publish and subscribe to content. The XML structure of an RSS file includes a root element, an element, and multiple elements, each representing a content entry. Read and parse RSS files through XML parser, and users can subscribe and get the latest content.

See all articles