2012-03-30 46 views
0

我在解析黑莓中的Xml時遇到了一些問題。 如果Xml包含空標籤。 該代碼返回一個空例外.. 一些解決方案建議使用嘗試和catch.What我應該做什麼來解決這個問題?空標籤在黑莓中解析Xml時返回Null異常

,這是解析代碼

DocumentBuilderFactory docBuilderFactory= DocumentBuilderFactory. newInstance(); 
      DocumentBuilder docBuilder= docBuilderFactory.newDocumentBuilder(); 
      docBuilder.isValidating(); 
      doc = docBuilder.parse(conn.openInputStream()); 

      doc.getDocumentElement().normalize(); 
      list=doc.getElementsByTagName("*"); 
      node=new String(); 
      element = new String(); 

      //this "for" loop is used to extract all elements and their value, so they can be displayed on the device 

      for (int i=0;i<list.getLength();i++){ 
       Node value=list.item(i).getChildNodes().item(0); 
       //getting attribute ==> Node value=list.item(i).getAttributes().item(0); 


       node=list.item(i).getNodeName(); 
       element=value.getNodeValue(); 
       if(node.equals("Name")){ 
       // some code goes here 

空標籤,如:< /標籤> 或<標籤> <標籤/>

回答

0

你的代碼的一部分拋出空指針異常?您的代碼似乎認爲由getElementsByTagName返回的所有結果都將具有子節點,這是有問題的,因爲該查詢適用於文檔中的所有節點。

0

//文本是您的標籤名稱。

NodeList _textNdList = doc.getElementsByTagName(Text); 

String result = getXMLTagValue(_textNdList,0); 

public static String getXMLTagValue(NodeList node,int id) 
    { 
     if(node.item(id).getChildNodes().item(0) == null) 
      return ""; 
     else 
      return node.item(id).getChildNodes().item(0).getNodeValue(); 
    } 

它會幫助你。我也面臨同樣的問題。而且,我也解決使用this.`


`