我是一名c ++程序员,但对java世界来说是新手。我必须直接将xml数据显示到jtable。
说,
xml具有以下格式
<Name> Tom </Name>
<DateofBirth> 12/3/1985 </DateofBirth>
<country> US </country>
然后需要将表格显示如下
Name | DateofBirth | Country
Tom 12/3/1985 Us
可以吗?如果有,请提供样品吗?
答案 0 :(得分:1)
是的,这是非常可行的。这个过程有两个步骤。第一个是解析xml。用于解析xml的一些示例Java代码将是(此示例显示从xml文件中获取“person”节点,但它可以轻松地适应您的xml文件):
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
Document document = parser.parse("xml/sample.xml");
NodeList personNodes = document.getElementsByTagName("person");
List<String> names = new LinkedList<String>();
for (int i = 0; i < personNodes.getLength(); i++) {
String firstName = null;
String lastName = null;
Node personNode = personNodes.item(i);
NodeList children = personNode.getChildNodes();
for (int j = 0; j < children.getLength(); j++) {
Node child = children.item(j);
String nodeName = child.getNodeName();
String nodeValue = child.getTextContent();
if ("firstName".equals(nodeName)) {
firstName = nodeValue;
} else if ("lastName".equals(nodeName)) {
lastName = nodeValue;
}
}
names.add(firstName + " " + lastName);
}
提取所需数据后,创建了一个使用此数据的新JTable。用于您的目的最简单的JTable构造函数是:
JTable(Object[][] rowData, Object[] columnNames)
有更多更先进和更好的方法(例如使用数据绑定框架),但这绝对是一个很好的起点。
答案 1 :(得分:0)
这当然可行。
我会查看JDOM库,它提供了一个简单的XML API。它比标准但有点笨拙的DOM / SAX库更容易使用。
如果您有上述XML的架构,JAXB可能会引起关注,尽管它非常重要。
但是,我无法在Swing / JTable方面提供可靠的建议。我敢肯定有很多人可以照顾这方面的事情。答案 2 :(得分:0)
TableModel是一个接口。如果您确实想直接从XML文档填充表,请编写TableModel接口的自定义实现,该实现从内存中的DOM对象获取/设置值。
这样做的一个优点是您可以支持编辑表格,并将编辑直接应用于XML元素。
请注意,这些TableModel方法被称为非常频繁,因此应该非常快。如果您正在处理大型XML文档,那么访问单个单元格的随机访问速度可能不够快。