使用SAX XML解析器的空指针异常
问题描述:
我正在使用SAX解析器进行XML解析。问题是如果我打印,一切都很好。但是,如果我要救什么,我得到这个错误信息(用错别字):使用SAX XML解析器的空指针异常
解析器代码:
"XML Pasing Excpetion = java.lang.NullPointerException"
我的代码如下
try {
/** Handling XML */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
/** Send URL to parse XML Tags */
URL sourceUrl = new URL(
"http://50.19.125.224/Demo/VeryGoodSex_and_the_City_S6E6.xml");
/** Create handler to handle XML Tags (extends DefaultHandler) */
MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler((ContentHandler) myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));
} catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
}
对象保存XML解析信息:
public class ParserObject {
String name=null;
String description=null;
String bitly=null; //single
String productLink=null;//single
String productPrice=null;//single
Vector<String> price=null;
}
Handler类:
static ParserObject[] xmlDataObject = null;
public void endElement(String uri, String localName, String qName)
throws SAXException {
currentElement = false;
if (qName.equalsIgnoreCase("title"))
{
xmlDataObject[index].name=currentValue;
}
else if (qName.equalsIgnoreCase("artist"))
{
xmlDataObject[index].artist=currentValue;
}
}
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
currentElement = true;
if (qName.equalsIgnoreCase("allinfo"))
{
System.out.println("started");
}
else if (qName.equalsIgnoreCase("tags"))
{
insideTag=1;
}
}
public void characters(char[] ch, int start, int length)
throws SAXException {
if (currentElement) {
currentValue = new String(ch, start, length);
currentElement = false;
}
}
答
您的ParserObject数组,即xmlDataObject具有空值,这就是为什么它显示空指针异常。这是我的观点,它可能是错误的,但一旦检查它。
+0
谢谢..我的坏! – user926293
你可以发布堆栈跟踪吗?将'e.printStackTrace();'添加到您的catch块,以便您可以确切地看到问题出在哪里。 –
感谢您的建议...解决了这个问题。 – user926293