解析XML時遇到問題。使用DOM4J解析XML文件
我有以下方法:
public void componentsInfoToSimulation(String houseDivision, String equipment) {
Element root = doc.getRootElement();
pt.ipp.isep.gecad.masgrip.Simulation.getHouseNamesOfComponents().add(equipment);
for (Iterator i = root.elementIterator("house"); i.hasNext();) {
Element element = (Element) i.next();
if (element.attributeValue("id").equals(houseDivision)) {
for (Iterator j = element.elementIterator("" + houseDivision); j.hasNext();) {
Element innerElement = (Element) j.next();
if (innerElement.attributeValue("id").equals(equipment)) {
for (Iterator k = innerElement.elementIterator("" + equipment); k.hasNext();) {
Element innerSubElement = (Element) k.next();
String op = innerSubElement.getQualifiedName();
switch (op) {
case "power":
pt.ipp.isep.gecad.masgrip.Simulation.getHousePowerDosComponents().add(Integer.parseInt(innerSubElement.getTextTrim()));
break;
case "min_power":
pt.ipp.isep.gecad.masgrip.Simulation.getHouseMinPowerComponents().add(Integer.parseInt(innerSubElement.getTextTrim()));
break;
case "max_power":
pt.ipp.isep.gecad.masgrip.Simulation.getHouseMaxPowerComponents().add(Integer.parseInt(innerSubElement.getTextTrim()));
break;
case "average_usage_hour":
pt.ipp.isep.gecad.masgrip.Simulation.getHouseAverageUsageHoursPerDay().add(Float.parseFloat(innerSubElement.getTextTrim()));
break;
case "average_usage_minute":
pt.ipp.isep.gecad.masgrip.Simulation.getHouseAverageUsageMinutesPerDay().add(Float.parseFloat(innerSubElement.getTextTrim()));
break;
default:
break;
}
}
}
}
}
}
System.out.println("" + pt.ipp.isep.gecad.masgrip.Simulation.getHouseNamesOfComponents());
System.out.println("" + pt.ipp.isep.gecad.masgrip.Simulation.getHousePowerDosComponents());
System.out.println("" + pt.ipp.isep.gecad.masgrip.Simulation.getHouseMinPowerComponents());
System.out.println("" + pt.ipp.isep.gecad.masgrip.Simulation.getHouseMaxPowerComponents());
System.out.println("" + pt.ipp.isep.gecad.masgrip.Simulation.getHouseAverageUsageHoursPerDay());
System.out.println("" + pt.ipp.isep.gecad.masgrip.Simulation.getHouseAverageUsageMinutesPerDay());
}
這是我的XML文件的樣本:
<components>
<house id="Kitchen">
<espresso_machine id="espresso machine">
<power>360</power>
<min_power>360</min_power>
<max_power>360</max_power>
<average_usage_hour>0.25</average_usage_hour>
<average_usage_minute>15</average_usage_minute>
</espresso_machine>
<coffee_machine id="coffee machine">
<power>1500</power>
<min_power>800</min_power>
<max_power>1500</max_power>
<average_usage_hour>0.25</average_usage_hour>
<average_usage_minute>15</average_usage_minute>
</coffee_machine>
<coffee_pot id="coffee pot">
<power>0</power>
<min_power>200</min_power>
<max_power>200</max_power>
<average_usage_hour>0.25</average_usage_hour>
<average_usage_minute>15</average_usage_minute>
</coffee_pot>
</house>
</components>
如果我有我的節目的「咖啡機」我應該有以下輸出:
[espresso_machine] [360] [360] [360] [0.25] [15]
但是,它出來是這樣的:
[espresso_machine] [] [] [] [] []
我的事情問題出在交換機/我使用innerElement.getTextTrim()
時的情況,但我不確定。你能幫我解決這個問題嗎?
我已經更改了我的XML文件,但仍然無法工作。我不知道爲什麼。我有同樣的輸出 – SaintLike
沒關係,我正在嘗試以前的版本。非常感謝 – SaintLike