0
我已經把我的代碼吐出來,並找出了什麼方法似乎是造成這個問題,但我一直無法弄清楚爲什麼。根本沒有編譯錯誤,但程序似乎並沒有完成這個方法。XML分析器無法正常工作
在這一點之後,它會繼續工作,它只是完全跳過某一部分,並使某些變量爲空,導致它稍後在代碼中跳過動作。
我最終試圖從數據庫中拉出最後一項,比較數字並根據這兩組之間的差異進行計算。如果我的數據對象爲空,我將代碼設置爲不進行計算,並且由於此問題,我的數據對象始終爲空。
我已經在此代碼中的多個位置放了Toast通知,它似乎卡在while
循環內的某處。
private Flows readFlows(XmlPullParser parser) throws XmlPullParserException, IOException
{
parser.require(XmlPullParser.START_TAG, null, "flows");
//declare variables
String ReportDate = null;
String TimeMeterRead = null;
Integer Influent14 = null;
Integer Influent15 = null;
Double WaterTreated14 = null;
Double WaterTreated15 = null;
Double TotalWaterTreated = null;
Integer Softener1 = null;
Double WaterSoftened1 = null;
Integer Softener2 = null;
Double WaterSoftened2 = null;
Integer Softener3 = null;
Double WaterSoftened3 = null;
Integer Softener4 = null;
Double WaterSoftened4 = null;
Integer Softener5 = null;
Double WaterSoftened5 = null;
Integer WaterByPassed = null;
Double TotalByPassed = null;
Double SaltUsed = null;
Double SoftenerRegeneration = null;
Double RegenWaste = null;
Double Level = null;
Double PSI = null;
//read tag and open corresponding function
while(parser.next() != XmlPullParser.END_TAG)
{
if (parser.getEventType() != XmlPullParser.START_TAG)
{
continue;
}
String name = parser.getName();
if (name.equals("ReportDate"))
{
ReportDate = readReportDate(parser);
} else if (name.equals("TimeMeterRead"))
{
TimeMeterRead = readTimeMeterRead(parser);
} else if (name.equals("ReportID"))
{
Influent14 = readInfluent14(parser);
} else if (name.equals("Influent14"))
{
Influent14 = readInfluent14(parser);
} else if (name.equals("Influent15"))
{
Influent15 = readInfluent15(parser);
} else if (name.equals("WaterTreated14"))
{
WaterTreated14 = readWaterTreated14(parser);
} else if (name.equals("WaterTreated15"))
{
WaterTreated15 = readWaterTreated15(parser);
} else if (name.equals("TotalWaterTreated"))
{
TotalWaterTreated = readTotalWaterTreated(parser);
} else if (name.equals("Softener1"))
{
Softener1 = readSoftener1(parser);
} else if (name.equals("WaterSoftened1"))
{
WaterSoftened1 = readWaterSoftened1(parser);
} else if (name.equals("Softener2"))
{
Softener2 = readSoftener2(parser);
} else if (name.equals("WaterSoftened2"))
{
WaterSoftened2 = readWaterSoftened2(parser);
} else if (name.equals("Softener3"))
{
Softener3 = readSoftener3(parser);
} else if (name.equals("WaterSoftened3"))
{
WaterSoftened3 = readWaterSoftened3(parser);
} else if (name.equals("Softener4"))
{
Softener4 = readSoftener4(parser);
} else if (name.equals("WaterSoftened4"))
{
WaterSoftened4 = readWaterSoftened4(parser);
} else if (name.equals("Softener5"))
{
Softener5 = readSoftener5(parser);
} else if (name.equals("WaterSoftened5"))
{
WaterSoftened5 = readWaterSoftened5(parser);
} else if (name.equals("WaterByPassed"))
{
WaterByPassed = readWaterByPassed(parser);
} else if (name.equals("TotalByPassed"))
{
TotalByPassed = readTotalByPassed(parser);
} else if (name.equals("SaltUsed"))
{
SaltUsed = readSaltUsed(parser);
} else if (name.equals("SoftenerRegeneration"))
{
SoftenerRegeneration = readSoftenerRegeneration(parser);
} else if (name.equals("RegenWaste"))
{
RegenWaste = readRegenWaste(parser);
} else if (name.equals("Level"))
{
Level = readLevel(parser);
} else if (name.equals("PSI"))
{
PSI = readPSI(parser);
} else
{
skip(parser);
}
}
return new Flows(ReportDate, TimeMeterRead, Influent14, Influent15,
WaterTreated14, WaterTreated15, TotalWaterTreated, Softener1,
WaterSoftened1, Softener2, WaterSoftened2, Softener3,
WaterSoftened3, Softener4, WaterSoftened4, Softener5, WaterSoftened5,
WaterByPassed, TotalByPassed, SaltUsed, SoftenerRegeneration,
RegenWaste, Level, PSI);
}
XML代碼:
<xml><flows>
<TotalWaterTreated>200</TotalWaterTreated>
<ReportDate>6/30/2013</ReportDate>
<TimeMeterRead>0700</TimeMeterRead>
<Influent14>100</Influent14>
<Influent15>100</Influent15>
<WaterTreated14>100</WaterTreated14>
<WaterTreated15>100</WaterTreated15>
<Softener1>100</Softener1>
<WaterSoftened1>100</WaterSoftened1>
<Softener2>100</Softener2>
<WaterSoftened2>100</WaterSoftened2>
<Softener3>100</Softener3>
<WaterSoftened3>100</WaterSoftened3>
<Softener4>100</Softener4>
<WaterSoftened4>100</WaterSoftened4>
<Softener5>100</Softener5>
<WaterSoftened5>100</WaterSoftened5>
<WaterByPassed>200</WaterByPassed>
<TotalByPassed>100</TotalByPassed>
<SaltUsed>10</SaltUsed>
<SoftenerRegen>100</SoftenerRegen>
<RegenWaste>10</RegenWaste>
<Level>10</Level>
<PSI>10</PSI>
</flows></xml>
我還沒有完全一步一步地進行調試,但是我已經找到了這條路線。我將xml文件添加到問題中,但是我從腳本生成了結構,因此在那裏不應該存在問題。 – Jim
我發現我的問題在代碼的另一部分。我以某種方式刪除了解析器中跳過不需要的xml元素的部分中的「break」。我的代碼現在已修復。 – Jim
告訴你哈哈,我很高興你有它的工作 – aehs29