-1

Java で Dom Parser を使用して XML データを解析しようとしています。

次の XML データの解析に成功しました -

<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

HEREのコードを使用しました。

しかし、次の XML データを解析しようとすると、

<body message="hello">
<mainData data1="XYZ" data2="ABC" data3="PQR"></mainData>
</body>

ヌルポインタ例外が発生しています。

どちらの XML も構造が異なります。最初のものは一般的ですが、2 番目のものはわかりません。

Javaを使用して2番目の構造でXMLを解析するのを手伝ってください。

私のコードは -

try

{
    String strUrl = "http://someurl";
    URL url = new URL(strUrl);
    InputStream inStream = url.openStream();

    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(inStream);

    NodeList nList = doc.getElementsByTagName("body");

    for (int i = 0; i < nList.getLength(); i++) 
    {
           Node nNode = nList.item(i);
           if (nNode.getNodeType() == Node.ELEMENT_NODE)
           {
              Element eElement = (Element) nNode;

              NodeList nListRoute = eElement.getElementsByTagName("mainData");
              for (int j = 0; j < nListRoute.getLength(); j++)
              {
                   Node nNodeRoute = nListRoute.item(j);
                   if (nNodeRoute.getNodeType() == Node.ELEMENT_NODE)
                   {
                      Element eElementRoute = (Element) nNodeRoute;

                      NodeList nlList = eElementRoute.getElementsByTagName("data1").item(0).getChildNodes();
                      Node nValue = (Node) nlList.item(0);
                      System.out.println("data1 : " + nValue.getNodeValue());
                  }                        
             }                           
          }                
    }           
}
catch (Exception e) 
{
    e.printStackTrace();
}

そして、私はエラーが発生しています -

java.lang.NullPointerException

行 " NodeList nlList = eElementRoute.getElementsByTagName("data1").item(0).getChildNodes(); "

4

2 に答える 2

2

ええと、要素を取得しようとしていて、属性を取得しています。だから私が提案するのは、基本的な基礎をクリアしてみてください。要素を取得したい場合は、次のように書く必要があります

nodeobject.getElementsByTagName("Elementobject");

タグがないので、それはあなたに与えています

NUll POINTER

属性については、属性が存在する場合に行く必要FOR loopがあります。

于 2013-10-05T06:24:50.967 に答える
1

data1 は要素ではなく、属性です。したがって、getElementByTagName() メソッドを使用してから item() メソッドを呼び出すと、最初に何かが返されるかどうかを確認せずに NullPointerException が発生します。

属性を取得してみてください。例については、こちらを確認してください: http://www.drdobbs.com/jvm/easy-dom-parsing-in-java/231002580

于 2013-01-18T10:47:06.100 に答える