de( parseXml( text ) );
setModel( new DefaultTreeModel( treeNode ) );
} file://中止XTree()
使用Java Swing创建一个XML编辑器(3)
时间:2010-12-16
/**
* 这个方法采用一个DOM 节点,然后在子节点中递归直到所有的接点都被添加到DefaultMutableTreeNode中。
* 这是一个递归方法,为了找到根节点下的每一个子节点,它每次都要调用自己。
* JTree然后就可以使用DefaultMutableTreeNode对象了,因为它已经是树型了。
*
* @参数 root org.w3c.Node.Node
*
* @返回值 返回一个基于根节点DefaultMutableTreeNode对象
*/
private DefaultMutableTreeNode createTreeNode( Node root )
{
DefaultMutableTreeNode treeNode = null;
String type, name, value;
NamedNodeMap attribs;
Node attribNode;
// 从根节点中取得数据
type = getNodeType( root );
name = root.getNodeName();
value = root.getNodeValue();
treeNode = new DefaultMutableTreeNode( root.getNodeType() == Node.TEXT_NODE ? value : name );
// 显示属性
attribs = root.getAttributes();
if( attribs != null )
{
for( int i = 0; i < attribs.getLength(); i++ )
{
attribNode = attribs.item(i);
name = attribNode.getNodeName().trim();
value = attribNode.getNodeValue().trim();
if ( value != null )
{
if ( value.length() > 0 )
{
treeNode.add( new DefaultMutableTreeNode( "[Attribute] --> " + name + "=\"" + value + "\"" ) );
} file://end if ( value.length() > 0 )
} file://end if ( value != null )
} file://end for( int i = 0; i < attribs.getLength(); i++ )
} file://end if( attribs != null )
// 如果存在子节点,递归
if( root.hasChildNodes() )
{
NodeList children;
int numChildren;
Node node;
String data;
children = root.getChildNodes();
// 如果子节点非空的话,只递归
if( children != null )
{
numChildren = children.getLength();
for (int i=0; i < numChildren; i++)
{
node = children.item(i);
if( node != null )
{
if( node.getNodeType() == Node.ELEMENT_NODE )
{
treeNode.add( createTreeNode(node) );
} file://end if( node.getNodeType() == Node.ELEMENT_NODE )
data = node.getNodeValue();
if( data != null )
{
data = data.trim();
if ( !data.equals("\n") && !data.equals("\r\n") && data.length() > 0 )
{
treeNode.add(createTreeNode(node));
} file://end if ( !data.equals("\n") && !data.equals("\r\n") && data.length() > 0 )
} file://end if( data != null )
} file://end if( node != null )
} file://end for (int i=0; i < numChildren; i++)
} file://end if( children != null )
} file://end if( root.hasChildNodes() )
return treeNode;
} file://end createTreeNode( Node root )
使用Java Swing创建一个XML编辑器(4)
时间:2010-12-16
/**
* 这个方法,被createTreeNode()用来联系一个字符串和某一种类型的节点。
*
* @参数 node org.w3c.Node.Node
*
* @返回值 返回显示节点类的字符串
*/
private String getNodeType( Node node )
{
String type;
switch( node.getNodeType() )
{
case Node.ELEMENT_NODE:
{
type = "Element";
break;
}
case Node.ATTRIBUTE_NODE:
{
type = "Attribute";
break;
}
case Node.TEXT_NODE:
{
type = "Text";
break;
|