`
xinyoulinglei
  • 浏览: 126636 次
社区版块
存档分类
最新评论

XmlTree

    博客分类:
  • java
xml 
阅读更多

package com.huawei.bss.xml;


import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;


/**
* The Class XmlTree.
*/
public class XmlTree
{

    /** The root. */
    private XmlNode root = null;

    /**
     * Instantiates a new xml tree.
     */
    public XmlTree()
    {
    }

    /**
     * Instantiates a new xml tree.
     *
     * @param root the root
     */
    public XmlTree(XmlNode root)
    {
        this.root = root;
    }

    /**
     * Gets the root.
     *
     * @return the root
     */
    public XmlNode getRoot()
    {
        return this.root;
    }

    /**
     * Sets the root.
     *
     * @param root the new root
     */
    public void setRoot(XmlNode root)
    {
        this.root = root;
    }

    /**
     * Show all.
     */
    public void showAll()
    {
        if (this.root == null)
        {
            System.out.println("null");
        }
        else
        {
            System.out.println(show(this.root, 0));
        }
    }

    /**
     * Show.
     *
     * @param node the node
     * @param space the space
     * @return the string
     */
    private String show(XmlNode node, int space)
    {
        StringBuilder str = new StringBuilder();
        for (int i = 0; i < space; ++i)
        {
            str.append("    ");
        }
        str.append("<").append(node.getTagName());
        if (node.getAttributes().size() > 0)
        {
            str.append(" ").append(getNodeAttribs(node.getAttributes()));
        }
        str.append(">");
        if (node.getChildren() != null)
        {
            int size=node.getChildren().size();
            for (int i = 0; i < size; ++i)
            {
                str.append("\r\n");
                str.append(show((XmlNode) node.getChildren().get(i),
                    space + 1));
               
                //得到子类的Node
                XmlNode childNode=(XmlNode)node.getChildren().get(i);
                if (node.getChildren().get(i).getClass() == XmlNode.class)
                {
                    str.append("</").append(childNode.getTagName()).append(">");
                }
            }
        }
       
        if(node.isRoot())
        {
            str.append("\r\n</").append(node.getTagName()).append(">");
        }

        return str.toString();
    }

    /**
     * Gets the node attribs.
     *
     * @param attribs the attribs
     * @return the node attribs
     */
    private String getNodeAttribs(Map<String, String> attribs)
    {
        StringBuilder sb = new StringBuilder();
        for (Iterator<Entry<String, String>> iterator =
            attribs.entrySet().iterator(); iterator.hasNext();)
        {
            Entry<String, String> e = iterator.next();
            String key = e.getKey();
            String value = e.getValue();
            sb.append(key).append("=").append("\"").append(value).append("\"")
                .append(" ");

        }

        return sb.toString();
    }
}
分享到:
评论

相关推荐

    xmltree.rar

    在“xmltree.rar”这个压缩包中,我们可以推测包含的是一个关于XML数据结构展示的程序或库,它可能模拟了Windows操作系统中的树形导航界面,使得用户能够以图形化的方式查看和操作XML文档的结构。 树形导航在许多...

    XmlTree 树形控件到XML的操作

    XmlTree控件是一种在Visual C++ 6.0(vc6)环境中用于显示和操作XML数据的图形化界面组件。这个控件允许开发者以树形结构来展示XML文档的节点结构,提供了一种直观的方式来创建、修改和保存XML文档。在本文中,我们...

    无刷新树XMLtree源码 xmltree.v1.2_21

    此js的树控件,可以从XML中加载数据。当然这个XML可以使用asp/jsp动态输出。还可以异步加载数据,这种方式是仿照msdn online...此能够适应大多数的应用要求。在xml中提供树状结构的样式属性,能够方便的改变显示的效果

    无刷新树XMLtree源码

    无刷新树XMLtree源码是一种在Java开发中用于构建动态、无需页面刷新的树形数据结构的技术。这种技术主要用于提高用户体验,特别是在展示大量层级数据时,用户可以方便地展开、折叠节点,而无需等待整个页面重新加载...

    XmlTree 树菜单脚本实例

    通过这个测试实例你将学会如何使用一个树形菜单。具体参数说明:xmltree.xml文件内,运行效果:http://www.codefans.net/upload/softimg/11/21995.gif

    XmlTree.zip

    《XMLTree:借助CamX实现高效XML文件编辑》 XML(eXtensible Markup Language)是一种标记语言,常用于数据交换、配置文件和文档结构化表示。在处理XML文件时,传统的文本编辑器可能无法满足高效操作的需求,尤其是...

    网页xmltree列表

    网页XMLTree列表是一种基于XML数据结构的网页展示技术,它将XML文档中的数据转换为可交互的树形结构,方便用户以层次化的方式查看和操作数据。这种技术在Web开发中常常用于显示复杂的数据结构,比如目录结构、数据库...

    XMLtree13模块源码支持CDATAUTF8可替代XML支持库

    数据_取原始数据,数据_生成XML文本,私用_生成XML数据,数据_导入,数据_释放,私有_验证节点ID合法性,节点_用ID取出,节点_删除,私有_标记为已删除节点,节点_修改,节点_插入,节点_用路径取出,私有_分析路径,节点_取实际...

    易语言XMLtree13模块支持CDATAUTF8可替代XML支持库

    易语言XMLtree13模块支持CDATAUTF8可替代XML支持库源码,数据_取原始数据,数据_生成XML文本,私用_生成XML数据,数据_导入,数据_释放,私有_验证节点ID合法性,节点_用ID取出,节点_删除,私有_标记为已删除节点,节点_修改,...

    易语言XMLtree模块支持CDATAUTF8XML注释自主的XML解析引擎

    易语言XMLtree模块支持CDATAUTF8XML注释自主的XML解析引擎源码,数据_取出,数据_导入,数据_释放,节点_取出,节点_删除,节点_替换,节点_插入,节点_数据_取实际名称,私有_CDATA替换并编号,私有_解析XML数据,私有_删空白...

    xmltree.net-开源

    【XMLTree.Net开源项目详解】 XMLTree.Net是一个开源的C# .Net项目,它为开发者提供了一种全新的树形视图组件。这个组件利用了.Net框架的Graphics2D图形处理能力,可以将XML数据结构以可视化的方式展示出来,同时...

    JAVA xmltree 实现 树的实现

    在Java开发中,XML(可扩展标记语言)是一种常见的数据交换格式,用于存储和传输结构化数据。要实现XML文件的树形结构,我们需要利用Java的DOM(文档对象模型)或SAX(简单API for XML)解析器。...

    xmltree-rs:将XML文件读入简单的树结构

    在Rust编程语言中,处理XML文件时,有一个名为`xmltree-rs`的库,它提供了一个简单易用的API,允许开发者将XML文件解析成树形结构,便于进行数据操作和解析。 `xmltree-rs`库的核心概念是XML树的节点结构。这个结构...

    XML Tree-开源

    1. `include`目录:存放库的头文件,如`xmltree.h`,提供了XML Tree库的API定义,包括类、函数声明等。 2. `src`目录:包含库的源代码文件,如`xmltree.cpp`,实现了头文件中声明的接口。 3. `examples`目录:可能有...

    vc++ xmltree

    vc解析xml文件添加到TreeCtrl,添加,删除,修改,比较完整的例子

Global site tag (gtag.js) - Google Analytics