[Java]FreemarkerのXMLパーサとネームスペース(ns_prefixes)についてのメモ

FreemarkerのXMLパーサとネームスペース(ns_prefixes)について

例えば、以下のようにネームスペースが付けられているような、
XMLをFreemarkerのテンプレートでパースして表示しようとすると、
若干躓くことになる。

<?xml version="1.0" encoding="UTF-8" ?>
<root xmlns="http://hogehoge.com/xmlns">
	<key>hogehoge</key>
	<value>hogehoge</value>
</root>

というのも、以下のようなコードでは値が取得できないのだ。

key=${doc.root.key}<br/>
value=${doc.root.value}
<#-- docはNodeModel -->

これは、ネームスペースを使っているためである。
ので、取得するにはこのように書くことになる。

<#ftl ns_prefixes={"xmlns": "http://hogehoge.com/xmlns"}>
<#-- 先頭に書くのがいいっぽい。-->

<#assign root = doc["xmlns:root"] />
key = ${root["xmlns:key"]}<br/>
value = ${root["xmlns:value"]}

というような感じで、エレメントを取得するたびにネームスペース
を付けてあげる必要がある。

これでは、面倒くさい。
Freemarkerでは、”D”がデフォルトとして割り当てられているので、

<#ftl ns_prefixes={"D": "http://hogehoge.com/xmlns"}>

と、宣言してあげると、一番最初のコードで各値を取得することが
できるようになる。

というメモ。


Popularity: 17% [?]

  • Digg
  • Google Bookmarks
  • Google Reader
  • Facebook
  • Delicious
  • FriendFeed
  • Evernote
  • Twitter
  • Share/Bookmark
  1. No comments yet.

  1. No trackbacks yet.