错误使用的DOMParser

错误使用的DOMParser

问题描述:

这是我的代码片断:错误使用的DOMParser

public EpsXmlParser(String xmlAnswer) { 

    DOMParser parser = new DOMParser(); 

    try { 
      InputSource is = new InputSource(); 

      is.setCharacterStream(new StringReader(xmlAnswer)); 

      parser.parse(is); 


    } catch (SAXException e) { 

     e.printStackTrace(); 
    } catch (IOException e) { 

     e.printStackTrace(); 
    } catch (Exception e) { 

     e.printStackTrace(); 
    } 

    Document doc = parser.getDocument(); 
    parseXmlDoc(doc.getDocumentElement()); 

} 

在该代码块字符串xmlAnswer实际上是从使用Web服务客户端程序的另一机拍摄的UTF-8编码的XML。 我意识到当调试时,这里的问题是在执行parser.getDocument()方法后Document doc是空的。 我无法解决问题。请帮我,我该怎么办?


我不能得到任何异常。代码运行得非常好,但Document doc会是这样的(查看下面的快照)。我无法理解问题是什么。任何帮助将不胜感激。

enter image description here


我用了一个这样的XML。这是XML格式标准吗?如果它是标准的,在使用预定义的XML解析代码时我怎么能得到任何异常。

<?xml version="1.0" encoding="UTF-8"?> 
<extra_result><status>00</status><data><transaction_id>3c704f15-7c09-4bba-9046-     ffbdb8c97b51</transaction_id><card_status>11</card_status><status_msg>Kart numarası yanlış.    </status_msg><card_no>48422</card_no><name_surname></name_surname><gsm></gsm><bonus></bonus></data></extra_result> 
+0

你还没有告诉你所得到的错误 - 你的异常处理很可能是这里的原因。如果解析部分失败,为什么你继续?另外一个异常是在NullPointerException之前显示的,因为'doc'为空,你可能会看到它吗? –

+0

我没有任何例外,我得到或捕获的catch块。 XML格式是标准的,但我无法使用预先定义的代码解析它。这里的问题实际上是我无法获得一个例外,但Document仍然是空的。怎么可能呢? – user1112085

+0

这听起来不太可能。如果你能提供一个简短但完整的例子 - XML(尽可能简短地给出一个完整的例子)和一个完整的*程序*,这将有所帮助。 –

我设法通过提供示例XML字符串文档来运行代码,没有任何问题。

它表明这个问题很可能与在xmlAnswer参数中给出的XML字符串本身有关。

为了看到究竟是你的问题试图改变你的代码并运行以下命令:

public EpsXmlParser(String xmlAnswer) { 

    DOMParser parser = new DOMParser(); 

    try { 
      InputSource is = new InputSource(); 

      is.setCharacterStream(new StringReader(xmlAnswer)); 

      parser.parse(is); 


    } catch (Exception e) { 
     throw new RuntimeException("Error on parsing document", e); 
    } 

    Document doc = parser.getDocument(); 
    parseXmlDoc(doc.getDocumentElement()); 

} 

我希望除了将分析错误的原因,实际被抛出。