我编写将解析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”变量那里所有的东西去正确的,我也没问题。你知道这是什么吗?
这里的一个更大的问题是字符方法。 –