感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

JavaでXMLを操作するクラス・メソッドのまとめ。

<スポンサーリンク>

XMLとはeXtensible Markup Languageの略。
XMLを使ったアプリケーションでは、DTD(Document Type Definition:文書型定義)かスキーマのいずれかをとおして、その文書の内容を使う前に文書構造の検証ができる。

DOM(Document Object Model)はXMLの処理に広く使われているオブジェクトである。

ノードはDOMツリーで中心となるデータ形である。
Nodeインターフェースを持つオブジェクトは子オブジェクトを扱うためのメソッドを実装している。
DocumentオブジェクトとElementオブジェクトはNodeインターフェースを持つオブジェクトである。

■ノード

メソッド 説明
appendChild(Node) 現在のノードに子ノードを追加し、追加したノードを返す
getFirstChild() ノードに子ノードがある場合は1番目の子を返す
getNextSibling() 現在のノードのすぐ後のノードを返す
getNodeName() ノードの形式に応じてノードの名前を返す
getNodeType() ノードの形式を返す
getNodeValue() ノードの値を返す

■エレメント
エレメントオブジェクトはNodeインターフェースの拡張で追加メソッドを提供する。

メソッド 説明
getElementsByTagName(String) 指定されたタグ名を持つすべてのエレメントのNodeListを返す
getTagName() エレメントのタグ名を表すStringを返す
getAttribute(String) 属性のString値を返す。
getAttributeNode(String) 属性をAttrオブジェクトとして返す。

■ドキュメント
ドキュメントオブジェクトはXMLソースのDOMツリー全体を表す。

メソッド 説明
appendChild(Node) DOMツリーにノードを追加する
createAttribute(String) 指定されたStringを名前に持つAttrを作成する
createElement(String) 指定されたStringを名前に持つエレメントを作成する
createTextNode(String) 指定されたStringをデータとして含むText型のノードを作成する
getElementByTagName(String) 指定されたタグ名を持つすべてのエレメントのNodeListを返す
getDocumentElement() ドキュメントのルートエレメントとなるノードを返す

■NodeList

メソッド 説明
getLength() リスト内のノード数を返す
item(int) コレクションから指定されたノードを返す

以下のXMLJSPで読み込んでみる。

<?xml version="1.0" encoding="Shift_JIS"?>
<project>
<dependencies>
	<dependency>
		<id>ant</id>
		<version>1.5</version>
	</dependency>

	<dependency>
		<id>junit</id>
		<version>3.8.1</version>
	</dependency>

	<dependency>
		<id>ejb</id>
		<version>2.1</version>
	</dependency>
</dependencies>
</project>

JSPのサンプル

<%@ page contentType="text/html"%>
<%@ page import="javax.xml.parsers.DocumentBuilderFactory,
                 javax.xml.parsers.DocumentBuilder,
                 org.w3c.dom.*"
%>
<%
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("C:\\temp\\test.xml");
NodeList nl = doc.getElementsByTagName("version");
%>
<html>
<head>
<title> XML PARSE TEST</title>
</head>
<body>
<%= nl.item(0).getFirstChild().getNodeValue() %>
</body>
</html>

ブラウザでJSPを表示させると、1.5と表示される。

(参考)

                                                          • -

今回で感謝のプログラミングは【186時間目】
10000時間まで、あと【9814時間】