//Если мы покидаем узел Name, то должны вернуться
//обратно в узел UserInfo
case ReadLocation.inName: {
currentReadLocation = ReadLocation.inUserInfo;
break;
}
//Если мы покидаем узел FirstName, то должны вернуться
//обратно в узел Name
case ReadLocation.inFirstName: {
currentReadLocation = ReadLocation.inName;
break;
}
//Если мы покидаем узел LastName, то должны вернуться
//обратно в узел Name
case ReadLocation.inLastName: {
currentReadLocation = ReadLocation.inName;
break;
}
//Если мы покидаем узел UserID, то должны вернуться
//обратно в узел UserInfo
case ReadLocation.inUserID: {
currentReadLocation = ReadLocation.inUserInfo;
break;
}
//Если мы покидаем узел UserInfo, то мы только что
//закончили чтение данных в узлах UserID, FirstName
//и LastName.
//
//Можно выйти из цикла, поскольку у нас уже есть вся
//информация, которую мы хотели получить!
case ReadLocation.inUserInfo: {
return false; //Анализ должен быть прекращен
}
}
return true; //Продолжить анализ
}
private static void LoadHelper_NewElementEncountered(string nodeName,ref ReadLocation currentReadLocation) {
//------------------------------------------------------
//Мы вошли в новый элемент!
//
//B какое состояние переход возможен, зависит от того, в
//каком состоянии мы находимся в данный момент
//------------------------------------------------------
switch (currentReadLocation) {
//Если мы находимся в узле AllMyData, то переход возможен
//в узлы, которые указаны ниже
case (ReadLocation.inAllMyData): {
if (nodeName == XMI_USERINFO_TAG) {
currentReadLocation = ReadLocation.inUserInfo;
}
break;
}
//Если мы находимся в узле UserInfo, то переход возможен
//в узлы, которые указаны ниже
case (ReadLocation.inUserInfo): {
if (nodeName == XML_USERID_TAG) {
currentReadLocation = ReadLocation.inUserID;
} else if (nodeName == XML_NAMEINFO_TAG) {
currentReadLocation = ReadLocation.inName;
}
break;
}
//Если мы находимся в узле Name, то переход возможен
//в узлы, которые указаны ниже
case (ReadLocation.inName): {
if (nodeName == XML_FIRSTNAME_TAG) {
currentReadLocation = ReadLocation.inFirstName;
} else if (nodeName == XML_LASTNAME_TAG) {
currentReadLocation = ReadLocation.inLastName;
}
break;
}
}
} //Конец функции
} //Конец класса
Повышение производительности приложения перекладыванием работы на другие программы