我正在尝试创建自己的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
答案 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);
希望这就是你要找的东西!