`
jjxliu306
  • 浏览: 157201 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

SWT中利用Treeview来显示XML文件

阅读更多
最近一个项目需要在SWT界面上来对xml文件进行显示,但找了一下发现网上对在swing上显示有很多DEMO,但SWT这里却没有找到合适的,于是自动动手丰衣足食,下面我们来用 treeview来对XML文件进行显示,不多说,直接上代码,主要是标签管理器和内容管理器的:





1.标签管理器中主要取出当前节点的所有参数集合显示:

/**

*标签管理

*/

new LabelProvider() {
  
   public String getText(Object element) {
    if(element instanceof Node){
     //获取当前XML 节点中的参数集合map
           NamedNodeMap map = ((Node)element).getAttributes();
           if(map == null) return "" ;
     int length = map.getLength();
     //取得该节点的名称
     String str = ((Node)element).getNodeName() + "  " ;
     //循环取出所有的参数 包含名称和值
     for(int j = 0 ; j < length ; j++) {
     
      String values = map.item(j).getNodeName() + " =\"" + map.item(j).getFirstChild().getNodeValue() + "\"";
     
      str += values + " ";
     }
     return str;
          }
          
          return "";
   }
  }



2.内容管理器 主要是取出来当前节点的字节点和判断是否该XML节点包含有字节点



/**
   * 内容管理器
   */
  new ITreeContentProvider() {
  
   @Override
   public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
    // TODO Auto-generated method stub
   
   }
  
   @Override
   public void dispose() {
    // TODO Auto-generated method stub
   
   }
  
   @Override
   public boolean hasChildren(Object element) {
   
    if(element instanceof Node) {
     Node node = (Node)element;
     if(node.hasChildNodes())
      return true;
    }
    
    return false;
   }
  
   @Override
   public Object getParent(Object element) {
    // TODO Auto-generated method stub
    return null;
   }
  
  
   @Override
   public Object[] getElements(Object inputElement) {
    System.out.println("########");
    return getChildren(inputElement);
   }
   @SuppressWarnings({ "rawtypes", "unchecked" })
   @Override
   public Object[] getChildren(Object parentElement) {
    //判断父节点是否为 XML中节点
    if(parentElement instanceof Node )
    {
     Node nodes = (Node)parentElement;
    
     List datas = new ArrayList();
    
     if (nodes != null) {
      //从第一个字节点开始遍历所有子节点,并且压入集合中
      for (Node n = nodes.getFirstChild(); n != null; n = n
       .getNextSibling()) {
      
       if(n != null && n.getNodeType() == Node.ELEMENT_NODE)
       
        datas.add(n);
       }
      return datas.toArray();
     }
   
     //如果为集合 则直接返回集合
    }else if(parentElement instanceof List) {
     return ((List)parentElement).toArray();
    }
//   
    return new Object[0];
   }
  }



3. treeview的input,初始化给传入xml文件中最高层的节点或同级最高的节点集合,直接上代码:



//设置input
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  DocumentBuilder builder;
  FileInputStream input = null;
  try {
   builder = factory.newDocumentBuilder();
   input = new FileInputStream(new File(path)); // path就是要解析的xml文件路径
   Document doc = builder.parse(input);
  
   //自动打开2级节点
   viewer.setAutoExpandLevel(2);
         viewer.setInput(doc.getChildNodes());
  } catch (ParserConfigurationException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SAXException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally {
   if(input != null)
    try {
     input.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
  }



好了 到此我们就告一段落,不知道怎么去插图,所以放了DEMO到附件中,包含有实例文件等,直接import到eclipse即可,试试吧!
1
0
分享到:
评论
5 楼 jjxliu306 2013-07-17  
z570517692 写道
你有没有做过xml文件进行可视化编辑的项目,把xml文件以树形展示在SWT上之后点击某个节点,该节点的属性就会展示在tableViewer中,对它编辑之后,点保存按钮就会保存到xml文件中。    这就是我现在做的,感觉很有点难度啊! 



这个也简单 无非加一个对viewer加一个编辑支持即可 你看看 EditingSupport 这个类
4 楼 z570517692 2013-07-16  
你有没有做过xml文件进行可视化编辑的项目,把xml文件以树形展示在SWT上之后点击某个节点,该节点的属性就会展示在tableViewer中,对它编辑之后,点保存按钮就会保存到xml文件中。    这就是我现在做的,感觉很有点难度啊! 
3 楼 jjxliu306 2012-08-29  
Aubergine_kang 写道
xml标签全部内容全都显示出来了。如何过滤提取一部分标签,或者标签中的一个属性?


1.如果要过滤标签的话 两个方法 一个是加视图过滤器 viewerfilter 另一个就是在我们解析xml的时候 直接给扔掉

2.过滤一个属性 那就只有在标签管理器中 //取得该节点的名称
     String str = ((Node)element).getNodeName() + "  " ;
     //循环取出所有的参数 包含名称和值
     for(int j = 0 ; j < length ; j++) {
     
      String values = map.item(j).getNodeName() + " =\"" + map.item(j).getFirstChild().getNodeValue() + "\"";
     
      str += values + " ";
     }


我们在这里扔掉我们不想要的

2 楼 gichan 2012-07-11  
一直对xml生成树,没有思路,借鉴一下
1 楼 Aubergine_kang 2012-02-08  
xml标签全部内容全都显示出来了。如何过滤提取一部分标签,或者标签中的一个属性?

相关推荐

    TreeView显示XML文件

    在本文中,我们将深入探讨如何使用TreeView控件来显示XML文件。TreeView控件是Windows Forms和WPF等.NET框架中的一个常见组件,用于以树形结构展示数据。在这个实例中,我们将自定义TreeView控件,使其能够递归解析...

    C#TreeView控件转存XML加载XML利用Helper

    C#TreeView控件转存XML加载XML利用Helper 此窗体有两个TreeView 一键复制TreeView1 到 TreeView2 而且保留tree1中的的image 存储xml 加载xml 清除node 加载treeview 用到了tag,selectimage等参数

    WinForm 中TreeView 互转 XML

    在WinForm应用中,我们可能需要将`TreeView`中的数据转换为XML,以便于存储或传输,或者反过来,从XML文件中恢复`TreeView`的状态。以下将详细介绍如何进行这两种转换。 首先,让我们讨论`TreeView2XML`的过程。这...

    将treeView序列化Xml

    在C#编程中,将`TreeView`控件的数据序列化到XML文件是一个常见的需求,这样可以方便地保存用户的配置或状态,以便于下次应用启动时恢复。以下是如何实现这个功能的详细步骤和知识点: 首先,我们需要创建两个...

    XML显示在TreeView控件。。。

    通过以上步骤,你可以在TreeView控件中有效地显示XML数据,使用户能够以图形方式查看和操作XML文档。这种方式在配置文件管理、数据浏览和XML数据编辑等场景中非常有用。同时,还可以结合其他.NET Framework提供的XML...

    TreeView 结点 保存XML

    本话题将深入探讨如何将`TreeView`的结点信息保存为XML文件,以及如何将XML文件重新导入到`TreeView`中。 首先,让我们理解`TreeView`的结点结构。每个`TreeView`结点代表一个层级,可以包含子结点,形成一棵树。...

    XML.rar_TreeView vb_VB XML TreeView_treeview xml_vb treeview_v

    总结来说,这个项目涉及了如何在VB.NET环境中利用TreeView控件展示XML数据的关键技术。通过加载XML文件,创建TreeView节点结构,并响应用户交互,我们可以创建一个直观的、用户友好的界面来管理和操作XML文档。对于...

    读取XML文档 内容显示在treeView

    在本文中,我们将探讨如何将XML文档的结构和内容读取出来,并将其显示在Windows应用程序中的TreeView控件上,以提供直观的数据浏览方式。 首先,我们需要了解XML的基本结构。XML文档由元素(Element)、属性...

    在ASP.NET中使用Treeview控件和XML

    在后台代码中,我们可以通过`TreeView1.DataBind()`方法将XML数据绑定到Treeview控件。或者在ASP.NET标记中直接指定XML文件路径,如: ```asp.net &lt;asp:TreeView ID="TreeView1" runat="server" DataSourceID=...

    treeview绑定xml

    1.通过xml文件绑定treeview 2.通过动态生成xml文件绑定treeview 3.代码动态生成treeview节点 vs2008的项目 在vs2005下删除 usingSystem.Xml.Linq; 就可以使用

    TreeView操作XML

    本篇将详细介绍如何在编程中利用TreeView来操作XML,实现数据的增、删、改、查功能。 首先,理解TreeView的基本概念。TreeView控件通常用于显示树形结构的数据,例如文件系统、组织结构或数据库表的关系。每个节点...

    Qt读写Xml文件,QTreeWidget显示Xml和导出Xml文件

    本文将详细讲解如何使用Qt来读取、写入XML文件,并通过QTreeWidget进行显示,同时介绍如何将QTreeWidget中的数据导出为XML文件。 首先,我们需要导入必要的Qt库,包括`QT += xml`和`QT += widgets`。然后,我们可以...

    实现读取xml文件并在treeview上显示并添加修改删除节点

    以上就是实现“读取XML文件并在TreeView上显示并添加修改删除节点”的主要技术要点。这个功能可以帮助用户直观地管理XML数据,提高数据操作的效率。通过熟练掌握这些知识点,开发者可以构建出更加灵活、易用的XML...

    swt中treeview和tableview实例

    swt中treeview和tableview实例,有助于理解这两个控件的使用。另外附带html页面。。可读性更强。

    winform导入xml利用treeview控件对其增删改查源码

    本项目“winform导入xml利用treeview控件对其增删改查源码”展示了如何在Visual Studio 2010环境下,通过WinForm界面与TreeView控件交互,实现对XML文件的操作,包括添加、删除、修改和查询节点。 首先,让我们理解...

    treeview到XML的转换

    TreeView常用于Windows应用程序中,以树形结构显示数据,而XML则是一种可扩展标记语言,广泛用于数据交换和存储。本文将深入探讨如何在C#环境下实现TreeView到XML的转换,以及这一过程中的关键知识点。 首先,让...

    c#Treeview处理大数据xml

    本篇文章将深入探讨如何在C#中利用`TreeView`控件处理大数据XML文件,包括XML的加载、`TreeView`的显示以及查询方法。 首先,让我们理解XML的基本概念。XML(eXtensible Markup Language)是一种用于存储和传输结构...

    winform treeview XML 编辑器

    1. **XML解析和序列化**:使用.NET Framework提供的System.Xml命名空间中的类,如XmlDocument或XDocument,来加载XML文件,解析其内容,并将结构填充到TreeView控件中。同时,保存编辑时,需要将TreeView和...

Global site tag (gtag.js) - Google Analytics