我会尽力解释这一点,尽我所能,但请问我重申,如果它不明确。通过传递字符串从交换机获取信息
我有两个类,一个类只包含从其他类传递给它的设置。这些类被称为配置文件和设置,配置文件从一个XML文件中读取设置,并将其传递到使用键和值这样设置:从XML文件中读取
public void readProfile()
{
// Gets our document ready to be read
setProfileDoc();
// Our Root element
Element root = getProfileDoc().getDocumentElement();
// The name of our profile
Node rootAttrItem = getProfileDoc().getChildNodes().item(0);
Node rootAttrName = rootAttrItem.getAttributes().getNamedItem("Name");
// Gets our Name value and stores into an array for later use.
String rootAttrValue = rootAttrName.getNodeValue();
addToArray(rootAttrValue, true);
// Our XML file contains <Database> and <Batch> with all information in between
NodeList dbNodes = root.getElementsByTagName("Database");
NodeList batchNodes = root.getElementsByTagName("Batch");
// Run through our <Database> tags and <Batch tags> and sends the information to Settings
for (int x = 0; x < dbNodes.getLength(); x++)
{
Element eElement = (Element) dbNodes.item(x);
NodeList userInfo = eElement.getChildNodes();
for (int y = 0; y < userInfo.getLength(); y++)
{
Node tempItem = userInfo.item(y);
if (!hasWhiteSpace(tempItem))
{
String tempKey = tempItem.getNodeName().toString().trim();
String tempValue = tempItem.getTextContent().toString().trim();
settings.setAllSettings(tempKey, tempValue);
}
}
}
for (int x = 0; x < batchNodes.getLength(); x++)
{
Element eElement = (Element) batchNodes.item(x);
NodeList batchInfo = eElement.getChildNodes();
for (int y = 0; y < batchInfo.getLength(); y++)
{
Node tempItem = batchInfo.item(y);
if (!hasWhiteSpace(tempItem))
{
String tempKey = tempItem.getNodeName().toString().trim();
String tempValue = tempItem.getTextContent().toString().trim();
settings.setAllSettings(tempKey, tempValue);
}
}
}
}
所有的设置去设置类,是设置像这样:
public void setAllSettings(String keyIn, String valueIn)
{
// Holds our keyIn
String tempKey = keyIn;
String tempValue = valueIn;
// Depending on what String is brought in, the appropriate settings will be applied
switch (tempKey){
/*
* Our main settings
*/
case "FirstRun":
setFirstRun(tempValue);
case "LastProfile":
setLastProfile(tempValue);
case "LastStartedBrewName":
setLastStartedBrewName(tempValue);
case "LastStartedBrewNumber":
setLastStartedBrewNumber(tempValue);
case "LastFinishedBrewName":
setLastFinishedBrewName(tempValue);
case "LastFinishedBrewNumber":
setLastFinishedBrewNumber(tempValue);
case "CurrentBrewFile":
setCurrentBrewFile(tempValue);
case "ProfilePath":
setProfilePath(tempValue);
case "SensorFilePath":
setSensorFilePath(tempValue);
case "DBConnectionFilePath":
setDBConnectionFilePath(tempValue);
case "SensorReadIncremental":
setSensorReadIncremental(tempValue);
/*
* Our profile settings
*/
case "Profile Name":
setProfileName(tempValue);
case "Database Protocol":
setDatabaseProtocol(tempValue);
case "Url":
setDatabaseUrl(tempValue);
case "Port":
setDatabasePort(tempValue);
case "User":
setDatabaseUser(tempValue);
case "Pass":
setDatabasePass(tempValue);
case "Table":
setDatabaseTable(tempValue);
/*
* Our Batch settings
*/
case "Total":
setBatchTotal(tempValue);
case "Current":
setCurrentBatch(tempValue);
}
}
现在我可以使用的System.out.println()显示从格式关键的XML文件中读取所有的设置:价值与此正确显示。所有信息被正确读取并正确显示。我可以在配置文件类和设置类中做到这一点,似乎它一切正常。
当我想重新使用这些设置我在个人资料的方法是这样的:
public String getSetting(String whatSetting)
{
return settings.getSetting(whatSetting);
}
肚里的方法中的设置是这样:
public String getSetting(String getSetting)
{
String chosenValue = "";
// Depending on what String is brought in, the appropriate settings will be applied
switch (getSetting){
/*
* Our main settings
*/
case "FirstRun":
chosenValue = getFirstRun();
case "LastProfile":
chosenValue = getLastProfile();
case "LastStartedBrewName":
chosenValue = getLastStartedBrewName();
case "LastStartedBrewNumber":
chosenValue = getLastStartedBrewNumber();
case "LastFinishedBrewName":
chosenValue = getLastFinishedBrewName();
case "LastFinishedBrewNumber":
chosenValue = getLastFinishedBrewNumber();
case "CurrentBrewFile":
chosenValue = getCurrentBrewFile();
case "ProfilePath":
chosenValue = getProfilePath();
case "SensorFilePath":
chosenValue = getSensorFilePath();
case "DBConnectionFilePath":
chosenValue = getDBConnectionFilePath();
case "SensorReadIncremental":
chosenValue = getSensorReadIncremental();
/*
* Our profile settings
*/
case "Profile Name":
chosenValue = getProfileName();
case "Database Protocol":
chosenValue = getDatabaseProtocol();
case "Url":
chosenValue = getDatabaseUrl();
case "Port":
chosenValue = getDatabasePort();
case "User":
chosenValue = getDatabaseUser();
case "Pass":
chosenValue = getDatabasePass();
case "Table":
chosenValue = getDatabaseTable();
/*
* Our Batch settings
*/
case "Total":
chosenValue = getBatchTotal();
case "Current":
chosenValue = getCurrentBatch();
}
return chosenValue;
}
这里的问题是我无法获得正确的返回设置。它通常会返回空值或错误的值 - 其中一个设置是如果它是该程序的第一次运行,而不是返回“否”,将返回“10”
有关这个问题可能有什么想法?
开始增加“打破”;到switch语句 – Taks