dom4j
以前に作成した「org.dom4j.Document を構築するのビルダー」をちょこっと修正(一覧)。以前のものは、createNode() メソッドでノードを作る際に、current プロパティを読み込んでルートノードかどうかを判断し、Element か Document のうち適切な方のイン…
前回のビルダーを拡張し、今回は org.dom4j.Element ではなく org.dom4j.Document を構築するビルダーにします(一覧)。サンプル・コード サンプル・コードはこんな感じ。 def builder = new SimpleDom4jBuilder() def doc = builder.table(customer:'c', i…
groovy.util.NodeBuilder の練習のため、dom4j の XML ドキュメントオブジェクトを構築するビルダーを作ってみます(一覧)。 簡単のため、以下の条件を課すことにします: 名前空間はサポートしない 構築後に返されるオブジェクトは org.dom4j.Element オブ…
・・・というか目次作りました→。ところで、dom4j のサイトが変わってた、というより、別物になってましたけど? 一体何なんでしょうか? website 云々って書いてますが・・・一応、そのサイトのサブディレクトリから dom4j-1.6.1 をダウンロードしたりでき…
以前に org.dom4j.Element クラス用に NamespaceContext のサブクラスを定義して、AspectJ を用いてその取得用のメソッドを織り込むということをやりました(一覧)。 新に作成した AbstractCompositeNamespaceContext クラスを用いて、同様のことをやってお…
前回に続き、今回は XML 文書のフォーマットの「出力編」。 SAX, DOM はナシ。 代わりに javax.xml.transform パッケージ (TrAX API) を扱います。各 API での対象となるクラスは以下の表の通り: API version クラス transform Java SE 6 (javax.xml.transf…
Java で XML 文書を扱う API がいろいろありますが、入出力の際に指定できるフォーマットが各 API でいろいろあるので、チョット整理しておきましょう。 JDOM の Format や dom4j の OutputFormat は次回。今回は読み込みの際に処理を行う「入力編」。 各 AP…
何時の間にやら dom4j の新バージョン『dom4j 2.0.0』がリリースされてました(一覧)。 SNAPSHOT ですけど。 2ヶ月ほども気付かないとは不覚。 Generics もサポートされてますッ。トップページには、バージョン2.0.0での変更点が以下のように書かれてます:…
前回までで紹介した SAX API を使用するサンプルとして、SAX 解析によって org.dom4j.Document のインスタンスを構築するクラスを作成してみます*1(一覧)。クラス定義 作成するクラスを SimpleSAXContentHandler とします。 SAXParser を用いて解析を行う…
今回は、要素に対して名前空間宣言を付加したり取り外したりするメソッドを見ていきます(一覧): Element#addNamespace(String, String) Element#remove(Namespace) Namespace#detach() Element#addNamespace(String, String) メソッド addNamespace(Strin…
今回から何回かに分けて、XML 文書のノード構成を変更する際に、名前空間がどのように扱われているかを見ていきましょう(一覧)。 今回は、要素に対して子要素を付加したり取り外したりするメソッドです: Element#add(Element) Element#detach()*1 ちなみ…
今回は、「名前空間の暗黙的取り扱い」とは少々違うかもしれませんが、org.dom4j.Element に定義されている「文字列を指定してノードを取得する」メソッドを見ていきます(一覧)。 具体的には attribute(String) : Attribute attributeValue(String) : Stri…
今回は org.dom4j.Element に定義されている、要素に対して新たにノードを付け加えるメソッドを2つ見ていきます(一覧): addElement(String) : Element*1 addAttribute(String, String) : Element 付け加えるノードが要素か属性かによって、設定される名前…
dom4j は XML 名前空間をサポートしているので、要素や属性を生成・指定する際には、通常 QName を使用する必要があります。 ただし、毎回 QName を用いて生成・取得を行うのは手間なので、文字列 (java.lang.String) を用いてこれらを行う方法が提供されて…
今回扱うメソッドは以下の3つです(一覧): getNamespaceForPrefix(String) : Namespace getNamespaceForURI(String) : Namespace getNamespacesForURI(String) : List getNamespaceForPrefix(String) : Namespace このメソッドは、引数の文字列を接頭辞と…
今回は declaredNamespaces() additionalNamespaces() の2つのメソッドを見ていきます(一覧)。まず、以降で参照する XML 文書(の断片)を載せておきます: <a xmlns="ns" xmlns:p1="ns1" xmlns:p2="ns2"/> <b xmlns:p1="ns1" xmlns:p2="ns2"/> Element#declaredNamespaces() : List このメソッドは、対象要素に宣言されている名前空間のリ</b></a>…
XML の要素をモデル化したクラス org.dom4j.Element には、名前空間(宣言)に関連するメソッドがいくつか定義されています(一覧)。org.dom4j.Element に定義されている名前空間関連のメソッドには、以下のようなものがあります: メソッド名 返り値 引数 …
dom4j の連載で名前空間と QName についてあまり触れなかったので、ここで簡単な使い方を(一覧)。Namespace org.dom4j.Namespace は名前空間(宣言)ノードを表すクラスです。 Namespace オブジェクト(通常の XML 文書の名前空間ノードも)のイメージは、…
ひとまず、dom4j の基本的な使い方の連載は終了。 記事の一覧はこちらもしくはこちらを参照。今後、ユーティリティやスタイルシートなどの使い方を解読できればします。と言いつつ、名前空間と QName についてチョット記事を追加。 こちらをどうぞ。
前回、Maven2 上で dom4j が依存するライブラリを見ました。 今回は、具体的に POM ファイルを書いてみましょう(一覧)。ここでは、以下の条件 対象となる Java 事項環境は Java SE 1.4 以降(すなわち xml-api は依存性に入れない) XPath を使う(すなわ…
今回は、Maven2 の POM ファイルを基に、dom4j-1.6.1(以下、dom4j)が依存している他のライブラリを見ていきましょう(一覧)。Maven2 にはライブラリの依存関係に対してスコープを定義できるんでした→。 以下では dom4j の POM ファイルに定義されてる依存…
今回は、Document オブジェクトをファイルなどに出力する際に、そのフォーマットを指定する org.dom4j.OutputFormat(以下、 OutputFormat)について見ていきます(一覧)。 OutputFormat は概ね org.dom4j.XMLWriter(以下、XMLWriter)と共に用います。Out…
今回は、第2回に対して Document オブジェクトを XML ファイルや org.w3c.dom.Document オブジェクトなどに変換する方法を見ていきましょう(一覧)。 これらを行うクラスは、Document オブジェクトを生成するクラス同様、org.dom4j.io パッケージ内にありま…
今回は XPath を用いて、ノードを取得したり(属性などの)値を取得したりする方法を見ていきます(一覧)。dom4j で XPath 機能を利用するためには、XPath エンジンである Jaxen の jar ファイルをクラスパス内に含める必要があります*1。Node#selectNodes(…
今回はノードを走査する方法を見ていきましょう(一覧)。 Quick Start Guide, cookbook 参照。 ノードを走査する方法としては、主に以下のものがあります: コレクション・フレームワークを用いる 高速ルーピング Visitor パターン ♪コレクション・フレーム…
前回は Node*1 のサブインターフェースの階層構造を見ました。 今回はそれらのインターフェース間の包含関係を見ていきましょう(一覧)。♪包含関係♪ 包含関係で重要な役割を果たすのは Branch インターフェースのサブインターフェース、 Document, Element …
今回は dom4j で実現している、XML 文書のオブジェクト・モデルを見ていきましょう(一覧)。XML 文書には要素やテキストなど、いろいろなノードがあります。 それらを表すインターフェースは org.dom4j.Node を頂点とする階層構造をなしています。 これを図…
今回は org.dom4j.Document オブジェクトの取得方法を見ていきます(一覧)。 プログラム内において XML 文書を扱うには、何においてもまず、XML 文書を表すオブジェクトを取得しなければなりません。 dom4j で XML 文書を表すオブジェクトは org.dom4j.Docu…
前回チラッと紹介した dom4j の使い方を、何回かに渡って簡単に御紹介(一覧)。 dom4j って必要? 前回にも書きましたが、最近は dom4j のような「XML 文書をモデル化した Java オブジェクト」を用いるよりも、「XML 文書を Java オブジェクト(特に Java B…
★メモリー上に展開しない API★ 以下の API はどちらも、XML 文書をメモリー上に展開しないので、軽快に動作します。 SAX (Simple API for XML) いわゆる PUSH 型の読み取り API。 XMLReader または SAXParser によって読み取りを開始すると、出現した要素や…