в течение 10 минут непринужденно набивалась схема кода и сам код (уж коли изучение идет параллельно с применением). затем последовала минута молчания и был добавлен намеренно незакрытый камент. называется,
вспомнил
public static String AddOpenedArticle( String sectionName, Int32 articlesNumber )
{
* FUCK IT!!!!!!!!! IDIOT!!!!! YOU CAN MANAGE ALL THIS SHIT JUST BY A DYNAMIC
* XPATH!!!!!!!!
/*
* 1. Загружаем файл
* 2. Находим блок нужного раздела
* 3. В нем выбираем раздел общего числа статей
* и отдельно раздел числа открытых статей
* 4. Обновляем значения в узлах с учетом присланного числа статей
* 5. Сохраняем изменения.
* 6. Используя функции IncreaseArticlesTotalNumber и IncreaseArticlesTotalNumberSpecificType
* обновляем общую статистику
*/
String errorString = "";
// 1.
XmlDocument infoFile = new XmlDocument();
infoFile.Load( systemInfoFilePath );
//2.
XmlNodeList xmlElementsList = infoFile.GetElementsByTagName( xmlPathSectionNode );
/*
* данный прием неверен в случае использования такого узла,
* но подобная возможность пресекается далее проверкой был ли получен
* правильный узел.
* при этом не возникает ошибки использования неициализированной
* переменной типа XmlNode, которой не присвоено значение, в пункте 3.
*/
XmlNode xmlSectionNode = xmlElementsList.Item( 0 );
// используется для проверки был ли найден необходимый узел
bool isNodePresent = false;
foreach ( XmlNode xmlNode in xmlElementsList )
{
String attributeString = xmlNode.Attributes[ xmlAttributeSectionName ].Value;
// для тестирования
errorString += attributeString + "<br />";
if ( attributeString.Equals( sectionName ) )
{
xmlSectionNode = xmlNode;
isNodePresent = true;
break;
}
}
// проверка был ли получен узел
if ( !isNodePresent )
{
errorString += "Could not get section node in SystemInfo.xml";
return errorString;
}
// 3.
XmlNode totalArticlesCountNode = xmlSectionNode.SelectSingleNode( xmlSectionsTotalArticlesXPath );
XmlNode openArticlesCountNode = xmlSectionNode.SelectSingleNode( xmlSectionsOpenArticlesXPath );
// 4.
Int32 oldSectionTotalArticlesCount = Convert.ToInt32( totalArticlesCountNode.Value );
Int32 oldSectionOpenedArticlesCount = Convert.ToInt32( openArticlesCountNode.Value );
Int32 newSectionTotalArticlesCount = oldSectionTotalArticlesCount + articlesNumber;
Int32 newSectionOpenedArticlesCount = oldSectionOpenedArticlesCount + articlesNumber;
totalArticlesCountNode.Value = newSectionTotalArticlesCount.ToString();
openArticlesCountNode.Value = newSectionOpenedArticlesCount.ToString();
// 5.
infoFile.Save( systemInfoFilePath );
// 6.
IncreaseArticlesTotalNumber( articlesNumber );
IncreaseArticlesTotalNumberSpecificType( articlesNumber, ArticleAccessType.open );
return errorString;
}//AddOpenedArticle
(к сожалению у жру особенность весь текст выравнивать, ну да хрен с ними, с табами)
Is anybody home?
[Print]
Мист