イムは、XMLタグを使用してデータベースからデータを抽出しようとしているが、私はデータ抽出
'java.lang.String org.w3c.dom.Node.getNodeValue()' on a null object reference
わからないこのエラーを取得維持、なぜその私は、ログのを持っている場合、タグがnullであると言って私はデータを抽出しようとする前に文字列を、それは私が信じるべきであるように見えます。
<?xml version="1.0" ?>
<database>
<account>
<id>1</id>
<fname>john</fname>
<lname>smith</lname>
<status>1</status>
</account>
</database>
これは、データを抽出しようとしている文字列の出力です。ここでは、それを抽出するために使用しているコードがあります。
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();;
DocumentBuilder db = dbf.newDocumentBuilder();
Document dom = db.parse (new ByteArrayInputStream(s.getBytes()));
Element docEle = dom.getDocumentElement();
NodeList nl = docEle.getElementsByTagName("account");
Element entry = (Element)nl.item(0);
Element id = (Element)entry.getElementsByTagName("id").item(0);
Element fname= (Element)entry.getElementsByTagName("fname").item(0);
Element lname = (Element)entry.getElementsByTagName("lname").item(0);
Element status= (Element)entry.getElementsByTagName("status").item(0);
user_id = id.getFirstChild().getNodeValue();
user_fname = fname.getFirstChild().getNodeValue();
user_lname = lname.getFirstChild().getNodeValue();
user_status = status.getFirstChild().getNodeValue();
アプリがクラッシュすることが任意のヘルプは高く評価され、最初の要素からノード値を取得するのを試してみて、事前
コード値である持っています微妙に間違っている可能性が高い。デフォルトの 'file.encoding'がUTF-8でない場合(WindowsではCp1252)、' s.getBytes() 'はWindows-1252データの配列を返しますが、XMLはエンコーディングを宣言しないので、デフォルトはUTF-8です。コードポイント127を超える文字は、文字化けするか、解析が失敗します。 'Charset'をとらない' getBytes() 'のオーバーロードを決して呼び出さないでください。 's.getBytes(StandardCharsets.UTF_8)'を使ってください。 –
こんにちは、私はあなたが示唆したコードを追加しましたが、アプリケーションがまだクラッシュしている、それは違いがある場合は、Linuxベースに接続しているサーバー。 –
どちらが「ヌル」になる?可能な複製の[NullPointerExceptionとは何ですか?どうすれば修正できますか?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) –