XML因为良好的结构,被广泛地应用于文档格式的定义。我们知道,应用软件一般需要用配置文件来决定运行时的一些参数。以前的应用程序的配置文件一般是一个.ini文件。虽然现在,ini文件仍然在使用,但是由于XML的出现,越来越多的商用软件正在把XML当作配置文件的格式,如BEA的Weblogic,以及IBM的Websphere等。所以,当我们设计一个软件的配置文件时,将会越来越多地考虑使用XML作为该配置文件的格式。
而因为配置文件有时候必须让用户修改,所以提供一个可视化的编辑配置文件的格式,是一个软件具有良好的用户可交互性的体现。我们必须给XML文档找到一个可视化的方法。Java语言中的Swing组件里面的JTree,用于XML文档的可视化是非常适合的。这两者之间存在着很方便的转换方法。这就意味着我们能将用户在JTree上面的操作,在存盘后方便地表现为在XML文件中的修改,也能将XML文件方便地表现为一棵JTree展现给用户。
XML文档的可视化
一个XML文档其实是一个树形的结构。比如下面这个XML文档:
<?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>
可以看得出来,该XML文档是一个多界面程序的界面图片配置程序,如果将该XML文档可视化,那么使用JTree的话应该得到的是如下图所示的结果。
图 可视化结果
所有的XML文档,都能够生成这样一个Jtree。使用XML的Parser和Java里的JTree类,可以构造出一个通用的可视化XML文档从而构成一棵JTree。XML Parser对XML文档解析的结果是生成一颗DOM(Document Object Model)树,DOM树的结构和JTree的结构其实是一样的,这使JTree和XML Parser的配合非常自然。下面就介绍一下做法。
一个读写XML文件的类
首先必须获得XML Parser的包,可以从下面的地址获得:http://xml.apache.org/xerces2-j/index.html。
然后设计一个XMLTree的类,继承自JTree类的定义和成员变量,函数定义如下:
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 ) }
其中构造函数所做的初始化工作如下:
XMLTree(String fileName){ dbf = DocumentBuilderFactory.newInstance(); //生成dbf的实例 db = dbf.newDocumentBuilder(); //生成db的实例 treeNode = LoadFile( getXMLRoot( text ) ); //解析该xml文件,返回JTree的根节点 setModel( new DefaultTreeModel( treeNode ) ); //根据该根节点生成JTree }
其中,parseXml是一个返回XML文件根元素的程序,如下:
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树的根元素 }
核心部分的LoadFile是一个递归过程,如下:
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; //返回节点 }
使用Java的Swing包里的方法能够很容易地在JTree上做改动,可以使用弹出对话框的方法,也可以直接在JTree上改动。总之,JTree改动后,需要重新写回文件中去将一棵JTree写成XML文件是一个递归的过程,方法如下:
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(); } }
必须注意的是,如果XML文件中包含中文,那么需要在调用上面的函数之前,先在文件中输入该XML文件的编码方式,方法如下:
fw.write(“<?xml version=“1.0” encoding=“GB2312”?>\r\n”);
在调用该函数结束后,还应该关闭该文件,方法是:
fw.close()
结论
XML文件广泛地运用于配置文件、信息传递中。它的可视化方法有很多,本文通过结合Java的JTree类,介绍了其中一种实现方法。Java语言和XML的良好结合,让使用Java编制XML程序既灵活又方便。
以上是如何实现XML文档和JTree之间转换的详细内容。更多信息请关注PHP中文网其他相关文章!

RSS和XML是用于网络内容管理的工具。RSS用于发布和订阅内容,XML用于存储和传输数据。它们的工作原理包括内容发布、订阅和更新推送。使用示例包括RSS发布博客文章和XML存储书籍信息。

RSS文档是基于XML的结构化文件,用于发布和订阅频繁更新的内容。它的主要作用包括:1)自动化内容更新,2)内容聚合,3)提高浏览效率。通过RSSfeed,用户可以订阅并及时获取来自不同来源的最新信息。

RSS的XML结构包括:1.XML声明和RSS版本,2.频道(Channel),3.条目(Item)。这些部分构成了RSS文件的基础,允许用户通过解析XML数据来获取和处理内容信息。

RSSFEEDSUSEXMLTOSYNDICATECONTENT; PARSINGTHEMINVOLVESLOADINGINGINGINGINSSTRUCTURE,andExtractingData.ApplicationsIncludeBuildBuildingNewSagGregatorSaterNewSagGregatorSator andTrackingPodcastepodcastepisodes。

RSS文档的工作原理是通过XML文件发布内容更新,用户通过RSS阅读器订阅并接收通知。1.内容发布者创建并更新RSS文档。2.RSS阅读器定期访问并解析XML文件。3.用户浏览和阅读更新内容。使用示例:订阅TechCrunch的RSS源,只需复制链接到RSS阅读器中即可。

使用XML构建RSSfeed的步骤如下:1.创建根元素并设置版本;2.添加channel元素及其基本信息;3.添加条目(item)元素,包括标题、链接和描述;4.转换XML结构为字符串并输出。通过这些步骤,你可以从零开始创建一个有效的RSSfeed,并通过添加额外的元素如发布日期和作者信息来增强其功能。

创建RSS文档的步骤如下:1.使用XML格式编写,根元素为,包含元素。2.在内添加、、等元素描述频道信息。3.添加元素,每个代表一个内容条目,包含、、、等。4.可选地添加和元素,丰富内容。5.确保XML格式正确,使用在线工具验证,优化性能并保持内容更新。

XML在RSS中的核心作用是提供一种标准化和灵活的数据格式。1.XML的结构和标记语言特性使其适合数据交换和存储。2.RSS利用XML创建标准化格式,方便内容共享。3.XML在RSS中的应用包括定义feed内容的元素,如标题和发布日期。4.优势包括标准化和可扩展性,挑战包括文件冗长和严格语法要求。5.最佳实践包括验证XML有效性、保持简洁、使用CDATA和定期更新。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

Atom编辑器mac版下载
最流行的的开源编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境