单个JTable单元中的Java显示元素

时间:2014-07-18 15:56:38

标签: java xml jtable nodes

我正在尝试创建自己的XML编辑器,并且我使用JTable来显示XML节点。但是,我有以下XML:

<Department id="A">
<DeptCode>Example1</DeptCode>
<DeptName>Example2</DeptName>
<li>List1</li>
<li>List2</li>
<li>List3</li>
<li>List4</li>
<li>List5</li>
<li>-Point</li>
</Department>
<Department id="B">
<DeptCode>Example1</DeptCode>
<DeptName>Example2</DeptName>
<li>List1</li>
<li>List2</li>
<li>List3</li>
<li>List4</li>
</Department>

......等等。

我将如何展示&#34; li&#34;单个单元格中不同行(在JTable中)的每个部门的元素?希望有意义!

我能得到的最接近的是:

NodeList getElementTagName_LI = doc.getElementsByTagName("li");
            NodeList getElementTagName_dept = doc.getElementsByTagName("Department");
            //GET DEPARTMENTS
            for (int a = 0; a < getElementTagName_dept.getLength(); a++) {
                org.w3c.dom.Node allElements_dept = getElementTagName_dept.item(a);

                if (allElements_dept.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
                    org.w3c.dom.Element eElement = (org.w3c.dom.Element) allElements_dept;
                    departmentID = eElement.getAttribute("id").toString();
                    deptCode = eElement.getElementsByTagName("DeptCode").item(0).getTextContent().toString();
                    deptName = eElement.getElementsByTagName("DeptName").item(0).getTextContent().toString();
     //Get Each XML List Element
                        li = eElement.getElementsByTagName("li").item(0).getTextContent().toString();
                        li1 = eElement.getElementsByTagName("li").item(1).getTextContent().toString();
                        li2 = eElement.getElementsByTagName("li").item(2).getTextContent().toString();
                        li3 = eElement.getElementsByTagName("li").item(3).getTextContent().toString();
                        li4 = eElement.getElementsByTagName("li").item(4).getTextContent().toString();

                }
                //Insert the XML Node Values within the JTable.
                dept_TableModel.insertRow(0, new Object[]{departmentID});
                dept_TableModel.setValueAt(deptCode, 0, 1);
                dept_TableModel.setValueAt(deptName, 0, 2);
                dept_TableModel.setValueAt(li+li1+li2+li3+li4, 0, 3);
            }

它有用;只有每个部门的XML文档中都有相同数量的列表元素。但我需要做到这一点,以便它可以根据需要拥有尽可能多的列表元素。

如果有人能指出我正确的方向,我会非常感激,我已经在谷歌的任何地方,并提出了这个代码。我尝试了多个数组列表,但是无法在JTable中正确地进行排序。

非常感谢! Alpaxj

1 个答案:

答案 0 :(得分:2)

你可以这样做:

 String listLi = "";

 for(int i = 0; i < eElement.getElementsByTagName("li").getLength(); i++)
    listLi +=  eElement.getElementsByTagName("li").item(i).getTextContent().toString();

然后

 dept_TableModel.setValueAt(listLi, 0, 3);

希望这就是你要找的东西!