最近一个项目需要在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即可,试试吧!
分享到:
相关推荐
在本文中,我们将深入探讨如何使用TreeView控件来显示XML文件。TreeView控件是Windows Forms和WPF等.NET框架中的一个常见组件,用于以树形结构展示数据。在这个实例中,我们将自定义TreeView控件,使其能够递归解析...
C#TreeView控件转存XML加载XML利用Helper 此窗体有两个TreeView 一键复制TreeView1 到 TreeView2 而且保留tree1中的的image 存储xml 加载xml 清除node 加载treeview 用到了tag,selectimage等参数
在WinForm应用中,我们可能需要将`TreeView`中的数据转换为XML,以便于存储或传输,或者反过来,从XML文件中恢复`TreeView`的状态。以下将详细介绍如何进行这两种转换。 首先,让我们讨论`TreeView2XML`的过程。这...
在C#编程中,将`TreeView`控件的数据序列化到XML文件是一个常见的需求,这样可以方便地保存用户的配置或状态,以便于下次应用启动时恢复。以下是如何实现这个功能的详细步骤和知识点: 首先,我们需要创建两个...
通过以上步骤,你可以在TreeView控件中有效地显示XML数据,使用户能够以图形方式查看和操作XML文档。这种方式在配置文件管理、数据浏览和XML数据编辑等场景中非常有用。同时,还可以结合其他.NET Framework提供的XML...
本话题将深入探讨如何将`TreeView`的结点信息保存为XML文件,以及如何将XML文件重新导入到`TreeView`中。 首先,让我们理解`TreeView`的结点结构。每个`TreeView`结点代表一个层级,可以包含子结点,形成一棵树。...
总结来说,这个项目涉及了如何在VB.NET环境中利用TreeView控件展示XML数据的关键技术。通过加载XML文件,创建TreeView节点结构,并响应用户交互,我们可以创建一个直观的、用户友好的界面来管理和操作XML文档。对于...
在本文中,我们将探讨如何将XML文档的结构和内容读取出来,并将其显示在Windows应用程序中的TreeView控件上,以提供直观的数据浏览方式。 首先,我们需要了解XML的基本结构。XML文档由元素(Element)、属性...
在后台代码中,我们可以通过`TreeView1.DataBind()`方法将XML数据绑定到Treeview控件。或者在ASP.NET标记中直接指定XML文件路径,如: ```asp.net <asp:TreeView ID="TreeView1" runat="server" DataSourceID=...
1.通过xml文件绑定treeview 2.通过动态生成xml文件绑定treeview 3.代码动态生成treeview节点 vs2008的项目 在vs2005下删除 usingSystem.Xml.Linq; 就可以使用
本篇将详细介绍如何在编程中利用TreeView来操作XML,实现数据的增、删、改、查功能。 首先,理解TreeView的基本概念。TreeView控件通常用于显示树形结构的数据,例如文件系统、组织结构或数据库表的关系。每个节点...
本文将详细讲解如何使用Qt来读取、写入XML文件,并通过QTreeWidget进行显示,同时介绍如何将QTreeWidget中的数据导出为XML文件。 首先,我们需要导入必要的Qt库,包括`QT += xml`和`QT += widgets`。然后,我们可以...
以上就是实现“读取XML文件并在TreeView上显示并添加修改删除节点”的主要技术要点。这个功能可以帮助用户直观地管理XML数据,提高数据操作的效率。通过熟练掌握这些知识点,开发者可以构建出更加灵活、易用的XML...
swt中treeview和tableview实例,有助于理解这两个控件的使用。另外附带html页面。。可读性更强。
本项目“winform导入xml利用treeview控件对其增删改查源码”展示了如何在Visual Studio 2010环境下,通过WinForm界面与TreeView控件交互,实现对XML文件的操作,包括添加、删除、修改和查询节点。 首先,让我们理解...
TreeView常用于Windows应用程序中,以树形结构显示数据,而XML则是一种可扩展标记语言,广泛用于数据交换和存储。本文将深入探讨如何在C#环境下实现TreeView到XML的转换,以及这一过程中的关键知识点。 首先,让...
本篇文章将深入探讨如何在C#中利用`TreeView`控件处理大数据XML文件,包括XML的加载、`TreeView`的显示以及查询方法。 首先,让我们理解XML的基本概念。XML(eXtensible Markup Language)是一种用于存储和传输结构...
1. **XML解析和序列化**:使用.NET Framework提供的System.Xml命名空间中的类,如XmlDocument或XDocument,来加载XML文件,解析其内容,并将结构填充到TreeView控件中。同时,保存编辑时,需要将TreeView和...