直接将XML记录显示为jtable记录

时间:2009-10-13 12:00:30

标签: java xml swing

我是一名c ++程序员,但对java世界来说是新手。我必须直接将xml数据显示到jtable。

说,

xml具有以下格式

<Name> Tom </Name>
<DateofBirth> 12/3/1985 </DateofBirth>
<country> US </country>

然后需要将表格显示如下

Name    |     DateofBirth | Country

Tom      12/3/1985       Us

可以吗?如果有,请提供样品吗?

3 个答案:

答案 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文档,那么访问单个单元格的随机访问速度可能不够快。