收录日期:2018/04/27 01:25:02 时间:2016/05/18 06:54:55 标签:Java EE
用xml生成一个dom树,用JTree显示,如何让xml中部分元素(如tag名为aa的)不在树上显示?谢谢。
判断一下不就行了。
while(tagName!="aa")
    do Jtree....
这个...应该不行吧,能贴个例子吗?谢谢
是啊,在取node的时侯判断一下不就行了吗??
if(Element.getElementsByTagName("text").item(0).getFirstChild().getNodeValue()!="aa")

不过我不知道你说的转成jtree是怎么专的。
DefaultMutableTreeNode top =
    new DefaultMutableTreeNode("The Java Series");
createNodes(top);
final JTree tree = new JTree(top);

......

JScrollPane treeView = new JScrollPane(tree);
DefaultMutableTreeNode category = null;
DefaultMutableTreeNode book = null;

    category = new DefaultMutableTreeNode(
        "Books for Java Programmers");
    top.add(category);

    String value=getNodeValue();
    for(int i=0;i<value.length;i++)
    {
        if(value[i]!="aa")
       {
            book = new DefaultMutableTreeNode(new BookInfo
                (valu[i]);
            category.add(book);
        }
    }
.......

   public String[] getNodeValue()
   {   
     String filename="";
     String[] NodeName=null;
     try{
         SAXBuilder builder=new SAXBuilder();
         builder.build(filename);
         Document document=builder.build(filename);
         Element root=document.getRootElement();
         List children=root.getChildren();
         NodeName=new String[children.size()];
         
         for(int i=0;i<children.size();i++)
         {
            Object o=children.get(i);
            Element node=(Element)o;
            NodeName[i]=node.getName();         
         }
      }catch(Exception e)
       {
          System.err.println(e);
       }
      return NodeName;
   }

我的整棵树是用parse xml节点生成的model
    public synchronized void setRootNode(Node root) {

        // save root
        this.root = root;

        // clear tree and re-populate
        DefaultMutableTreeNode where = (DefaultMutableTreeNode)getRoot();
        where.removeAllChildren();
        nodeMap.clear();
        treeNodeMap.clear();

        buildTree(root, where);

        fireTreeStructureChanged(this, new Object[] { getRoot() }, new int[0], new Object[0]);

    } // setRootNode(Node)

然后通过构造方法
    public XmlTreeModel(Node node) {
        super(new DefaultMutableTreeNode());
        if (node!=null) {
            setRootNode(node);
        }
    }
把整棵树的model生成,再用setModel的方法把树生成的,请问该怎么办啊?
另外,我的xml文件是类似于这样的:
<form name="formname">
  <comp name="compname">
  </comp>
  <file name="filename">
  </file>
</form>
生成树之后,想让filetag不可见,并不是让它不存在,只是让它不可见。
我的方法也不是让file标签不存在,只是不添加到Jtree中,我用Jdom作为xml parser。
其实这是个简单的问题,不要复杂化,在添加到Jtree前做一个tagname的判断即可。
谢谢,那在我上面写的我的那种结构下要怎样做才行呢?
我都不知道你那些函数以及参数的含义: 
buildTree(root, where);
fireTreeStructureChanged(this, new Object[] { getRoot() }, new int[0], new Object[0]);

我想你应该在buildeTree函数中通过Node.getNodeName()来获取Node的值,
然后判断这个值是否符合要求,然后添加到tree中。
String nodeValue=root.getNodeName();
if(nodeValue!="value")
buildTree(root,where);
private void buildTree(Node node, MutableTreeNode where) {
        if (node == null) { return; }
        MutableTreeNode treeNode = insertNode(node, where);
    }

但是上面的root只是整个xml文件的根结点而已
很好,关注一下
要不你把全部代码贴出来吧,我帮你改改,
但有一点你应该明白,你需要学习找到问题的解决方法并自己解决。
谢谢,请问你有email吗?我回复了但是太长贴不了。
chenxi@linuxforum.net
gaochun@ec.necsi-sh.nec.com.cn
给我也来一个,帮你看看,如何
JTree仅仅是数据模型的一种表现形式。在创建你的模型的时候进行判断。
zh_xiao_f@sohu.com
我也想看看,麻烦你给我也发一个,我不胜感激,谢谢了!
我是为了学习一下的