Мои xml
должны бытьКак избежать вложенных операторов if в java?
<?xml version="1.0" encoding="UTF-8"?>
<Events>
<sunday><Event><ID>123</ID><Desc>abc</Desc></Event><Event><ID>124</ID><Desc>ade</Desc></Event></sunday>
<monday><Event><ID>125</ID><Desc>ades</Desc></Event></monday>
<tuesday><Event><ID>126</ID><Desc>adde</Desc></Event><Event><ID>127</ID><Desc>aade</Desc></Event></tuesday>
<wednesday><Event><ID>128</ID><Desc>afde</Desc></Event></wednesday>
<thursday></thursday>
<friday></friday>
<saturday></saturday>
</Events>
Я построения xml
из resultset
, используя, если еще, если заявление и оно работает нормально.
Это код Java я использую для построения выше xml
String sunTag = "", monTag = "", tueTag = "", wedTag = "", thuTag = "", friTag = "", satTag = "";
while (resultSet.next()) {
if("sunday".equalsIgnoreCase(resultSet.getString("WeekName"))) {
sunTag = sunTag + "<Event>";
sunTag = sunTag + "<ID>" + resultSet.getString("EventID") + "</ID>";
sunTag = sunTag + "<Desc>" + resultSet.getString("EventDesc") + "</D>";
sunTag = sunTag + "</Event>";
} else if("monday".equalsIgnoreCase(resultSet.getString("WeekName"))) {
monTag = monTag + "<Event>";
monTag = monTag + "<ID>" + resultSet.getString("EventID") + "</ID>";
monTag = monTag + "<Desc>" + resultSet.getString("EventDesc") + "</D>";
monTag = monTag + "</Event>";
} else if("tuesday".equalsIgnoreCase(resultSet.getString("WeekName"))) {
tueTag = tueTag + "<Event>";
tueTag = tueTag + "<ID>" + resultSet.getString("EventID") + "</ID>";
tueTag = tueTag + "<Desc>" + resultSet.getString("EventDesc") + "</D>";
tueTag = tueTag + "</Event>";
} else if("wednesday".equalsIgnoreCase(resultSet.getString("WeekName"))) {
wedTag = wedTag + "<Event>";
wedTag = wedTag + "<ID>" + resultSet.getString("EventID") + "</ID>";
wedTag = wedTag + "<D>" + resultSet.getString("EventDesc") + "</D>";
wedTag = wedTag + "</Event>";
} else if("thursday".equalsIgnoreCase(resultSet.getString("WeekName"))) {
thuTag = thuTag + "<Event>";
thuTag = thuTag + "<ID>" + resultSet.getString("EventID") + "</ID>";
thuTag = thuTag + "<Desc>" + resultSet.getString("EventDesc") + "</D>";
thuTag = thuTag + "</Event>";
} else if("friday".equalsIgnoreCase(resultSet.getString("WeekName"))) {
friTag = friTag + "<Event>";
friTag = friTag + "<ID>" + resultSet.getString("EventID") + "</ID>";
friTag = friTag + "<Desc>" + resultSet.getString("EventDesc") + "</D>";
friTag = friTag + "</Event>";
} else if("saturday".equalsIgnoreCase(resultSet.getString("WeekName"))) {
satTag = satTag + "<Event>";
satTag = satTag + "<ID>" + resultSet.getString("EventID") + "</ID>";
satTag = satTag + "<Desc>" + resultSet.getString("EventDesc") + "</D>";
satTag = satTag + "</Event>";
}
}
result = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ <Events>"
+ "<sunday>" + sunTag + "</sunday>"
+ "<monday>" + monTag + "</monday>"
+ "<tuesday>" + tueTag + "</tuesday>"
+ "<wednesday>" + wedTag + "</wednesday>"
+ "<thursday>" + thuTag + "</thursday>"
+ "<friday>" + friTag + "</friday>"
+ "<saturday>" + satTag + "</saturday>"
+ "</Events>";
Есть ли другой способ достичь этого без использования вложенных если заявления?
есть вероятность, что thuTag получит null String thuTag = map.get ("thursday") == null? "": map.get ("thursday"); Я прав? – Martin
@Martin Да, вы можете решить это, либо положив пустую строку на карту в начале для каждого дня, например. 'map.put (" sunday "," ");' или проверка в конце. – Radiodef
Еще лучше, избегайте конкатенации строк с помощью StringBuilder. Даже лучше, не стройте XML как строку: используйте библиотеку для записи XML, такую как Stax. Это немедленно предотвратило бы ошибку, присутствующую в этих примерах, где написаны несоответствующие начальные и конечные теги, и где не предпринимаются попытки избежать содержимого текстовых узлов. –