【问题标题】:Error at XML parsing using DOMParser使用 DOMParser 解析 XML 时出错
【发布时间】:2014-02-08 17:02:35
【问题描述】:

这是我的代码 sn-p:

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());

}

在这个代码块中,String xmlAnswer 实际上是一个 UTF-8 编码的 xml,它取自另一台使用 Web 服务客户端程序的机器。 我在调试时意识到这里的问题是在 parser.getDocument() 方法实现之后 Document doc 为空。 我无法解决问题。请帮帮我我该怎么办?


我没有任何例外。代码运行得很好,但 Document doc 会是这样的(看下面的快照)。我不明白是什么问题。任何帮助将不胜感激。


我使用了这样的 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>

【问题讨论】:

  • 您还没有告诉您遇到了什么错误 - 您的异常处理很可能是这里的原因。如果解析部分失败,你为什么要继续?由于doc 为空,在您可能看到的 NullPointerException 之前是否显示了另一个异常?
  • 我在 catch 块中获取或捕获也不例外。 XML 格式是标准的,但我无法使用预定义的代码对其进行解析。这里的问题实际上是我无法获得异常但 Document 仍然为空。这怎么可能?
  • 对我来说这听起来不太可能。如果您可以提供一个简短但完整的示例,这将有所帮助 - XML(尽可能简短地给出一个完整的示例)和一个完整的 program
  • 同意。如果您没有收到错误,则文档可能被正确解析,而您只是没有正确使用结果。但是,如果不了解更多实际失败的原因,我们将无法帮助您。

标签: java xml domparser


【解决方案1】:

通过提供示例 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());

 }

我预计异常会以解析错误的实际原因抛出。

【讨论】:

    猜你喜欢
    • 2013-02-09
    • 2021-12-28
    • 1970-01-01
    • 2019-06-27
    • 2012-06-01
    • 2016-06-12
    • 2013-03-07
    • 2015-12-12
    • 1970-01-01
    相关资源
    最近更新 更多