2012-09-14 128 views
0

我只是看到這是否可行,如果可能的話可能會得到一個小代碼示例。是否有可能創建一個解析存儲在服務器上的XML文件的JSP頁面。解析XML以創建動態頁面

XML將包含頁面上顯示的元素,因此更改XML可能會改變JSP頁面的外觀/佈局。

我不知道該如何格式化XML,並將其調用到JSP中,如果有人知道資源或者這是否可能,這將是很多幫助(我不期望有人只是做一些事情對我來說;))

感謝

回答

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>