我編寫將解析XML文件的應用程序。我使用SAX解析器,這裏是我的SAX處理代碼:Java和解析XML
public class XMLHandler extends DefaultHandler {
private static final String MEASURES = "measures";
private static final String SUGARMEASUREDATE = "sugarMeasureDate";
private static final String SUGARMEASUREVALUE = "sugarMeasureValue";
private static final String UPGYROSCOPEDATE = "upGyroscopeDate";
private static final String UPGYROSCOPEVALUE = "upGyroscopeValue";
private static final String DOWNGYROSCOPEDATE = "downGyroscopeDate";
private static final String DOWNGYROSCOPEVALUE = "downGyroscopeValue";
Boolean currentElement = false;
String currentValue = null;
public static MeasureLists measureLists = null;
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
currentElement = true;
if (localName.equals("measures")) {
measureLists = new MeasureLists();
}
}
public void endElement(String uri, String localName, String qName) throws SAXException {
currentElement = false;
if (localName.equals(SUGARMEASUREDATE)) {
measureLists.setSugarDate(currentValue);
}
else if (localName.equals(SUGARMEASUREVALUE)) {
measureLists.setSugarValue(currentValue);
}
else if (localName.equals(UPGYROSCOPEDATE)) {
measureLists.setUpGyroscopeDate(currentValue);
}
else if (localName.equals(UPGYROSCOPEVALUE)) {
measureLists.setUpGyroscopeValue(currentValue);
}
else if (localName.equals(DOWNGYROSCOPEDATE)) {
measureLists.setDownGyroscopeDate(currentValue);
}
else if (localName.equals(DOWNGYROSCOPEVALUE)) {
measureLists.setDownGyroscopeValue(currentValue);
}
}
public void characters(char[] ch, int start, int length) throws SAXException {
if (currentElement) {
currentValue = new String(ch, start, length);
currentElement = false;
}
}
public MeasureLists getMeasureLists() {
return measureLists;
}
}
我的問題是,該代碼檢測的事件(開始和結束標記)正常,但變量localName
是空String
。如果「命名空間處理未執行」,我在文檔中閱讀了localName
爲空。我的問題是什麼意思,我該如何處理。感謝您的幫助和提示。
編輯
我注意到,當我改變「QNAME」「的localName」變量那裏所有的東西去正確的,我也沒問題。你知道這是什麼嗎?
這裏的一個更大的問題是字符方法。 –