dポイントプレゼントキャンペーン実施中!

どなたか教えてください・・・。

import java.io.*;
import java.util.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import org.xml.sax.SAXException;

~途中略
xmlPath="test.xml";
DocumentBuilder docBld = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc=docBld.parse(xmlPath);

ここで、docの内容を見るとNULLになっています。
この後、
Element el = doc.getDocumentElement();
とすると、しっかりタグ名は取れるにも関わらず
値はNULLになってしまいます。
もちろん例外は何もスローされません。
何が起きているのかさっぱりです。

初めてパーサーにチャレンジしているということもあり、
見当もつかずに戸惑ってばかりです。
確認するところなどがあれば教えてください。

よろしくお願いします。

A 回答 (1件)

> ここで、docの内容を見るとNULLになっています。



「doc の内容」って何?
getNodeValue() で取得したもの、ということでしょうか?

であれば、null なのは仕様通りです(→参考URL の Node のマニュアルを参照のこと)。

> この後、
> Element el = doc.getDocumentElement();
> とすると、しっかりタグ名は取れるにも関わらず
> 値はNULLになってしまいます。

ここでいう「値」も getNodeValue() で返ってくるもののことですね。

あなたが言う「内容」or「値」というのは、きっと「テキストノード」のことですね。
それは、Element の子供として、Text がぶら下がっており、その「値」が
あなたの欲しいものです(きっと)。

<TEST>テスト</TEST>

という内容の XML を DOM にするとどういうふうになるでしょうか?
ちょろっと書いてみましたので、動かしてみて。

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader("<TEST>てすと</TEST>")));
Element e = doc.getDocumentElement();
System.out.println(e.getNodeName());
System.out.println(e.getNodeValue());

Text tx = (Text)e.getFirstChild();
System.out.println(tx.getNodeName());
System.out.println(tx.getNodeValue());

参考URL:http://java.sun.com/j2se/1.4/ja/docs/ja/api/org/ …
    • good
    • 1
この回答へのお礼

a-kumaさん、
言葉足らずにも関わらず、解読していただきまして有難うございました。
Nullは正当なのですね。

頂いたソース、表示されました。

もっと勉強して、また色々悩んでいきたいと思います。
助かりました。

お礼日時:2002/11/14 16:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!