私は、ユーザがアクセスできる特定のものを決定する.jspを持っています。これは、前のJSPによってストリームに読み込まれるXMLファイルを作成します。 char配列ストリームに読み込まれるXMLデータをテーブルに埋め込むにはどうすればよいですか?JSPから要求されたXMLデータをテーブルにフォーマットする方法
答えて
XMLファイルからHTMLテーブルを取得する方法はたくさんあります。もっともきれいな方法の1つは、そのXMLを再利用可能なコレクションjavabeansにパースしてJSPに渡すので、HTMLテーブルをレンダリングするときにJSTL<c:forEach>
を反復処理することができます。このように、各レイヤーはそれぞれ独自の明確な責任を持ちます。 Java SEはJAXBを提供してくれました。
あなたのXMLは次のように見えることを想像:
<data>
<entry>
<key>foo1</key>
<value>bar1</value>
</entry>
<entry>
<key>foo2</key>
<value>bar2</value>
</entry>
<entry>
<key>foo3</key>
<value>bar3</value>
</entry>
</data>
次のように、あなたはJAXBのJavaBeansを作成することができます。
@XmlRootElement
public class Data {
@XmlElement(name="entry")
private List<Entry> entries;
public List<Entry> getEntries() {
return entries;
}
public static class Entry {
@XmlElement
private String key;
@XmlElement
private String value;
public String getKey() {
return key;
}
public String getValue() {
return value;
}
}
}
を次のように次にあなたがList<Entry>
にそれを変換することができます:
List<Entry> entries = JAXBContext.newInstance(Data.class).createUnmarshaller().unmarshal(inputStream).getEntries();
次に、servlet(またはJSP?:/)に保存することができます
request.setAttribute("entries", entries);
最後
あなたは、それ以上のJSPの反復でHTMLテーブルとしてそれを提示することができます:
<table>
<c:forEach items="${entries}" var="entry">
<tr>
<td><c:out value="${entry.key}" /></td>
<td><c:out value="${entry.value}" /></td>
</tr>
</c:forEach>
</table>
メソッドを使用してXMLファイルのストリームを作成すると、データはXMLではなくプレーンテキストとして表示されます。それはまったく重要ですか? – cbj
はい、あなたのコードで何かが間違っています(または、あなたの質問が実際には不完全で、私が理解するのは、XML構造をHTMLテーブルとして提示したいということです)。 – BalusC
私は他の質問であなたのメソッドを使って関数からXMLデータを得ました。 BufferedReaderを使用してそのデータを印刷しました。私はinputStreamのXMLはまだ触れていないと推測しています...?だから、この方法はまだ適用されますか? – cbj
XSLTを使用してそのままXMLのスタイルを設定するか、XPathを使用してXML上を移動し、必要に応じたテーブルを作成できます。
論理を埋め込むことがきれいであるかどうかはわかりませんが、私はむしろそれをBeanで処理し、jspがテーブルを生成するために使用できるBeanから最終的なリストを得ることができます。
だからあなたのJSPであなたは、生のXML文書でのInputStream以外は何も持っていないしましたか? XML処理のためのJavaライブラリを習得するだけではほとんど選択肢がないようです。
Google検索「XML Processing in Java」には、利用可能なオプションが多数表示されます。上記の「HTMLのページで扱うことができるものにXMLを変換するXSLT」でさえ、このストリームを解析する必要があります。 JAXB API(http://jaxb.java.net/tutorial/section_1_2-Overview.html#Overview)は、これを少し難しくして、XML文書をPOJOにマップできるようにします。
とにかく、JSPレベルでこれを処理すると、コードの臭いが少しあります。 XMLストリームを別の場所で処理し、プレゼンテーションのためにJSPにPOJO結果を送信する必要があります。
私の価値は2セントです。
- 1. フォーマットされたハードディスクからデータを復元する方法
- 2. jspのSQLテーブルからデータを表示する他の方法
- 3. JSPからXMLデータを返す方法は?
- 4. フォーマットされたxmlテキストをブートストラップポップオーバーに表示する方法
- 5. C++でフォーマットされたテキストをXMLに変換する方法
- 6. httpで要求されたファイル(xml)をオブジェクトに格納する方法は?
- 7. 入れ子になったJSP/JSTLタグをフォーマットする方法
- 8. カール要求から返されるjsonデータを整形する方法は?
- 9. jspのテーブルからクリックされた行を取得する方法
- 10. Postgres - テーブルからエスケープされたデータを取得する方法
- 11. ResultSetオブジェクトからjspページの既存のテーブルにデータを入れる方法は?
- 12. XMLで強く型付けされたプリミティブ値を要求する方法
- 13. JSPインタビュー、サーブレットからJSPにデータを渡す方法は?
- 14. jspのXMLからデータを取得
- 15. XMLからExcelにエンコードされたデータを解析する方法
- 16. コードフォーマッタ:きれいにフォーマットされたJSPコードを掃除する
- 17. jsonから指定されたフォーマットにデータを変換する
- 18. フォーマットされたテキストをデータベースからTinyMCEに返す方法
- 19. JSPで要求属性にアクセスする方法は?
- 20. 保存されたデータをhtml形式でフォーマットする方法
- 21. 動的に作成されたテーブルからデータを取得する方法
- 22. 結合されたテーブルから直接クラスにデータをフェッチする方法は?
- 23. 1人のユーザーにリンクされたテーブルからデータを取得する方法
- 24. 認証でサーバーからデータを要求するさまざまな方法
- 25. xmlから必要なデータを抽出する方法
- 26. XMLファイルからjspページを生成する方法
- 27. 要求パラメータがjsp要求ディスパッチャに設定されていません
- 28. xhr要求からリダイレクトする方法
- 29. 春にjaxbからフォーマットされたxml出力を取得するには?
- 30. 要求入力されたデータは、
何テーブルJSPに要求を転送する前に、リクエストスコープに? HTMLテーブル? – gigadot
はい、htmlテーブルです。しかし、今はXMLが文字配列ストリームにあるため、XMLは平文であるため、... – cbj