现在,我们将讲述如何建立DOM对象和使用XSL以定义数据的格式。只要给定合适的输入,最终的输出都能够适用于任何程序中的各种数据。
Java能够从任何JDBC兼容的数据库中提取数据,把数据转换到一个DOM对象,然后使用XSL以需要的方式定义数据的格式。现在,我们将讲述如何建立DOM对象和使用XSL以定义数据的格式。只要给定合适的输入,最终的输出都能够适用于任何程序中的各种数据。
Java的绝大多数新版本都包含了JAXP XML处理功能及执行由万维网联盟(W3C)定义的DOM API的功能。基于这些JAXP兼容功能,通过JAXP factory和builder方法,只需要3行代码就可以建立一个DOM文档:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.newDocument();
名为resultset的一个根元素被生成并添加到一个文档对象:
Element root = document.createElement("resultset");
document.appendChild(root);
当resultset指针遍历所有的结果集时,一个包含行元素的新元素被添加到根元素:
Element nextRow = document.createElement("row");
列个数可从ResultSetMetaData对象读到,在数据库提取阶段必须定义这一对象:
intcolumnCount = rsmd.getColumnCount();
使用一个for循环可以获得列名称,并可以将带有一个包含名称值的子TextNode添加到每一列名称的names元素:
String[] columnNames = new String[columnCount];
Element names = document.createElement("names");
for (inti = 0; i < columnCount; i++){
/* the first column is 1, the second is 2, ...
*/
columnNames[i] = rsmd.getColumnName(i + 1);
Element nextNameNode = document.createElement("name");
Text nextName = document.createTextNode(columnNames[i]);
nextNameNode.appendChild(nextName);
names.appendChild(nextNameNode);
}