MASATOの開発日記


前の開発日記 次の開発日記 一覧

2002/11/08

最近、.NET Framework vs Javaの戦争の結果がさっさと決まってくれないかなぁと思います。
両方覚えるのは結構手間がかかります。 .NET Frameworkは、Windowsでしか動かないという欠点がありますが、 Javaより遥かに後発でありながら、既にクラスライブラリの機能面では逆転しているのではないかと思います。 .NET Framework実行環境(CLR)は非常に安定しているとまでは言えませんが、 Java実行環境(JavaVM)だってそんな安定しているとは思えません。
ここは、Microsoftに頑張ってもらって、Windows以外にもどんどん.NETの世界を広げていって、 Javaを駆逐して欲しいですね。
Javaが頑張って.NETを駆逐していっても全然構わないのですが、 相手はMicrosoftです。それはちょっと望み薄・・・

ファイルからXML文書を読込む方法

環境Java2 1.4 Standard Edition

Java2 1.4になってようやくXMLを扱うための機能が標準で搭載されました。 今回は、XML文書の読込む方法を説明します。 読込み後はDOMを使ってアクセスすることを前提としますが、DOMの説明はしません。 今回の説明範囲は、読込みの部分だけです。

インスタンスdocに、ファイル名test.xmlのXML文書を読込むコードは 以下のようになります。 読込めなかった場合は、新規ドキュメントを作成することにしました。

import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
// 中略
    File dataFile = new File("test.xml");
    Document doc = null;
    try {
      DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
      try {
        doc = builder.parse(dataFile);
      }catch (SAXException ex){
        doc = builder.newDocument();
      }catch (IOException ex){
        doc = builder.newDocument();
      }
    }catch (ParserConfigurationException ex){
      ex.printStackTrace();
      // 例外処理
    }
// 後略

これで読込んだ後は、普通のDOMが使用可能です。

ファイルにXML文書を書込む方法

環境Java2 1.4 Standard Edition

次は、読込んだドキュメントを書込む方法です。やっぱりDOMの説明はしません。

既にdocにXML文書が読込まれているとしますと、以下のようなコードになります。

import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.w3c.dom.*;
// 中略
    File dataFile = new File("test.xml");
    try {
      Source source = new DOMSource(doc);
      StreamResult result = new StreamResult(dataFile);
      TransformerFactory.newInstance().newTransformer().transform(source, result);
    }catch (TransformerConfigurationException ex){
      ex.printStackTrace();
      // 例外処理
    }catch (TransformerException ex){
      ex.printStackTrace();
      // 例外処理
    }
// 後略

なお、javax.xml.transformは、XSLTも扱えるようなので、 保存直前にXSLTで変換する、ということもできるのではないかと思います。

(2002/12/04) 語尾がおかしかった文を修正

(2002/12/04) コードの中を分かりやすくなるよう修正

前の開発日記 次の開発日記 一覧