(事后不能编辑) 但是当我要处理这与XmlPullParser,事件类型始终保持0 - 寻找我的XmlPullParser不识别任何其他标签。
我使用的处理(因为我是德国人,我用德语函数名称)的代码:
public void ladeXmlDatenInCubeNetz(String xmlDatenDateiName) {
String xmlDatenString = null;
try {
FileInputStream xmlDateiInput = new FileInputStream(new File(Environment.getExternalStorageDirectory().getPath()+"/ccdat.xml"));
InputStreamReader xmlInputStreamReader = new InputStreamReader(xmlDateiInput);
char[] EingabePuffer = new char[xmlDateiInput.available()];
xmlInputStreamReader.read(EingabePuffer);
xmlDatenString = new String(EingabePuffer);
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader(xmlDatenString));
int eventType = xpp.getEventType();
cDevice4 cd = new cDevice4();
CubeNetz.clear();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
if (xpp.getName().equals("Cube")) {
cd.setDeviceTypeSelector(0);
cd.setCubeCubeName(xpp.getAttributeValue("", "CubeName"));
cd.setCubeCubeRFAddress(xpp.getAttributeValue("", "CubeRF"));
cd.setCubeCubeSerialNumber(xpp.getAttributeValue("", "CubeSN"));
CubeNetz.add(cd);
} else if (xpp.getName().equals("Raum")) {
cd.setDeviceTypeSelector(1);
cd.setRaumName(xpp.getAttributeValue("", "RaumName"));
String rid = xpp.getAttributeValue("", "RaumID");
cd.setRaumID(Byte.valueOf(rid));
String aktRaumRF = xpp.getAttributeValue("", "RaumRF");
CubeNetz.add(cd);
} else if (xpp.getName().equals("Thermostat")) {
cd.setDeviceTypeSelector(2);
cd.setDeviceName(xpp.getAttributeValue("", "DevName"));
cd.setDeviceRFAddress(xpp.getAttributeValue("", "DevRF"));
cd.setDeviceSeriennummer(xpp.getAttributeValue("", "DevSer"));
cd.setDeviceRoomID(Integer.valueOf(xpp.getAttributeValue("", "DevRaumID")));
CubeNetz.add(cd);
}
}
}
try {
xpp.next();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
}
xmlInputStreamReader.close();
xmlDateiInput.close();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
类cDevice4包含用于访问ELV MaxCube-系统(加热控制)的执行情况。
我用一些在线验证器检查了Xml文件,它似乎是正确的。 那么我必须改变我的代码,我可以处理这个文件? 在此先感谢 GU_Meyer
2016-10-20
GU_Meyer
+0
用户java-json.jar将xml转换为json –
+0
我理解,比如使用json会更容易吗? 但是,即使文件是由xmlSerializer生成的(两者都是为Android指定的),也必须能够使用xmlPullparser读取xml文件。 –
+0
解决!将代码更改为以下代码可以正确读取文件: –