3

私は次のようなXMLを持っています:

<info>
    <userId>Admin</userId>
    <userNotes></userNotes>         
</info>

私はこれをJAVAで解析しようとしています。これが私のコードスニペットです:

NodeList userIdNodeList = document.getElementsByTagName("userId");

if (userIdNodeList!=null) {
    userId = userIdNodeList.item(0).getChildNodes().item(0).getNodeValue().trim();
}            

NodeList userNotesNodeList = document.getElementsByTagName("userNotes");

if (userNotesNodeList!=null) {
    userNotes = userNotesNodeList.item(0).getChildNodes().item(0).getNodeValue().trim();
}            

しかし、userNotes要素が空であるため、上記のコードはNULLポインターエラーをスローしています。

これを修正する方法について何かアイデアはありますか?

4

1 に答える 1

8

(訂正)

userNotesNodeList.item(0).getChildNodes().getLength()子要素もテキストもない場合は 0 を返します。

どうして

userNotesNodeList<userNotes>ノードのリストです。あります 1.とにかく、長さを確認して確認できます。

userNotesNodeList.item(0)最初の<userNotes>要素です。

userNotesNodeList.item(0).getChildNodes()の中にあるもののリストです<userNotes>...</userNotes>

テキストがない場合、これは要素が 0 の NodeList なので、

userNotesNodeList.item(0).getChildNodes().getLength() should return 0.

中間結果には vars を使用することをお勧めします (より明確なコードを作成するため)。または、この面倒な XML API を回避するためのヘルパー メソッドを作成します。

NodeList userNotesNodeList = document.getElementsByTagName("userNotes");
// userNotesNodeList should not be null, it can be zero length, but not null
Element userNotesElement = (Element) userNotesNodeList.item(0);
if (userNotesElement.getChildNodes().getLength() > 0) // then it has text
{
   userNotes = userNotesElement.getChildNodes().item(0).getNodeValue();
}
于 2012-09-27T15:59:20.420 に答える