错误使用的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会是这样的(查看下面的快照)。我无法理解问题是什么。任何帮助将不胜感激。
我用了一个这样的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>
答
我设法通过提供示例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());
}
我希望除了将分析错误的原因,实际被抛出。
你还没有告诉你所得到的错误 - 你的异常处理很可能是这里的原因。如果解析部分失败,为什么你继续?另外一个异常是在NullPointerException之前显示的,因为'doc'为空,你可能会看到它吗? –
我没有任何例外,我得到或捕获的catch块。 XML格式是标准的,但我无法使用预先定义的代码解析它。这里的问题实际上是我无法获得一个例外,但Document仍然是空的。怎么可能呢? – user1112085
这听起来不太可能。如果你能提供一个简短但完整的例子 - XML(尽可能简短地给出一个完整的例子)和一个完整的*程序*,这将有所帮助。 –