| | | 使用Java Swing 创建一个XML编辑器 | | 2001-05-28·
·wayne··yesky
| 上一页 1 2 3 4 5 下一页
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 )
| /**
* 这个方法,被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; } case Node.CDATA_SECTION_NODE: { type = "CData section"; break; } case Node.ENTITY_REFERENCE_NODE: { type = "Entity reference"; break; } case Node.ENTITY_NODE: { type = "Entity"; break; } case Node.PROCESSING_INSTRUCTION_NODE: { type = "Processing instruction"; break; } case Node.COMMENT_NODE: { type = "Comment"; break; } case Node.DOCUMENT_NODE: { type = "Document"; break; } case Node.DOCUMENT_TYPE_NODE: { type = "Document type"; break; } case Node.DOCUMENT_FRAGMENT_NODE: { type = "Document fragment"; break; } case Node.NOTATION_NODE: { type = "Notation"; break; } default: { type = "???"; break; } }// 结束 switch( node.getNodeType() ) return type; } file://结束 getNodeType()
| /**
* 这个方法,用来分析XML文本字符串,它返回Node类型的对象,能够被传送到createTreeNode()方法中。
*
* @参数 text 一个显示XML文档的字符串
* @返回值 返回一个org.w3c.Node.Node对象
*/
上一页 1 2 3 4 5 下一页 | | | 感谢
访问天极网,如果您觉得该文章涉及版权问题,请看这里!
|
|