解析XML以创建动态页面

时间:2012-09-14 08:28:55

标签: jsp xml-parsing

我只是看到这是否可行,如果可能的话可能会得到一个小代码示例。是否可以创建一个JSP页面来解析存储在服务器上的XML文件。

XML将包含页面上显示的元素,因此更改XML可能会改变JSP页面的外观/布局。

我不知道如何格式化XML并将其调用到JSP中,如果有人知道资源或者是否可能会有很多帮助(我不希望有人为我;))

由于

1 个答案:

答案 0 :(得分:1)

是的,但是,为什么不使用XSLT呢?如果您的主要目标是转换,那么XSLT将在没有JSP的情况下为您完成工作。如果没有,那么您的实现是特定于Java Server Pages域的,当您决定更改服务器时,让我们说PHP,那么您将不得不重新编程整个事情。

如果您想要一个关于如何使用java转换XML数据的简单示例,请查看存储在'data.xml'中的以下xml

<?xml version='1.0'?>
<data>
   <row><cell>1</cell><cell>2</cell><cell>3</cell></row>
   <row><cell>4</cell><cell>5</cell><cell>6</cell></row>
   <row><cell>7</cell><cell>8</cell><cell>9</cell></row>
</data>

您可以使用XDom,JDom或您拥有的内容来阅读此文件。我将使用java中包含的基本DOM,它不是那么友好且缺少迭代器,实际上不推荐用于大型XML文件。

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document d = db.parse(new File("./data.xml"));
out.println("<table border='1'>");
for(int i=0;i<d.getDocumentElement().getChildNodes().getLength();i++){
    Node row = d.getDocumentElement().getChildNodes().item(i);
    if(!row.getNodeName().equals("row")) continue;
    out.print("\t<tr>");
    for(int j=0;j<row.getChildNodes().getLength();j++){
        Node cell = row.getChildNodes().item(j);
        if(!cell.getNodeName().equals("cell")) continue;    
        out.print("<td>");
        out.print(cell.getTextContent());
        out.print("</td>");
    }
    out.println("</tr>");
}
out.println("</table>");

html输出将是:

<table border='1'>
    <tr><td>1</td><td>2</td><td>3</td></tr>
    <tr><td>4</td><td>5</td><td>6</td></tr>
    <tr><td>7</td><td>8</td><td>9</td></tr>
</table>