Получение неправильного имени файла, cName, cValue из xml, извлеченного с помощью linqC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Получение неправильного имени файла, cName, cValue из xml, извлеченного с помощью linq

Сообщение Anonymous »

У меня есть проект, который считывает XML-файл ожидаемых результатов сборки для каждой области сборки и сравнивает ее с журналами сборки, чтобы определить, прошла ли сборка. XML-файл, похоже, читается неправильно. Кто-нибудь знает, что не так с linq, из-за которого XML-файл извлекается некорректно?
Я рассматривал эти примеры:
linq
linqОднако, когда я распечатываю его, чтобы проверить его перед использованием, он получает неверные значения cName и cValue. Кроме того, он всегда выдает filename1.cs:
неправильно:
19:00
build_machine='mach31', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\R\filename1.cs', field='Status', comparison='equal', value='Success'
build_machine='mach31', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\R\filename1.cs', field='Status', comparison='equal', value='Success'
build_machine='mach31', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\R\filename1.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename4.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename4.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename4.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename4.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename4.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename4.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename4.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename4.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename4.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinISProjectVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename4.cs', field='Status', comparison='equal', value='Success'

должно быть:
19:00
build_machine='mach31', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\R\filename1.cs', field='Status', comparison='equal', value='Success'
build_machine='mach31', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\R\filename2.cs', field='Status', comparison='equal', value='Success'
build_machine='mach31', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\R\filename3.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename4.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename5.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename6.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\D\filename7.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\K\filename8.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\K\filename9.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\K\filename11.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename22.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinFileVersionStats', condition name='VersionFile', condition value = '\\view\Build_NightlyDeveloper\K\filename33.cs', field='Status', comparison='equal', value='Success'
build_machine='mach46', process_name='SpinISProjectVersionStats', condition name='ProductName', condition value = 'P1', field='Status', comparison='equal', value='Success'

...
Пока у меня есть этот код:
void ReadXml()
{
XmlDocument xml = new XmlDocument();
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string newPath = Path.GetFullPath(Path.Combine(path, @"..\.."));
string finalPathXml = Path.GetFullPath(Path.Combine(newPath, @"BuildVerificationBuildAttributes.xml"));

//linq
XDocument xmlDoc1 = XDocument.Load(finalPathXml);
XElement buildVerificationElement = xmlDoc1.Element("BuildVerification");
IEnumerable buildElements = buildVerificationElement.Elements("build");
IEnumerable buildMachines = buildElements.Elements("BuildMachine");

//get just the times from the xml
var codeFreezeTime = xmlDoc1.Descendants("codeFreezeTime").First()?.Value;
Console.WriteLine(codeFreezeTime);

IEnumerable processes = buildMachines.Elements("Process");
IEnumerable processNames = processes.Elements("ProcessName");
IEnumerable conditions = processNames.Elements("Conditions");
var found = xmlDoc1.XPathEvaluate("/BuildVerification/build/BuildMachine/Process/ProcessName/Conditions") as IEnumerable;

var results =
xmlDoc1.Descendants("build")
.SelectMany(x => x.Descendants("Process")
.SelectMany(y => y.Descendants("SuccessCriteria")
.Select(z => new
{
buildMach = (string)x.Element("BuildMachine"),
p1 = (string)y.Element("ProcessName"),
cName = (string)x.Descendants("Condition").FirstOrDefault().Attribute("name"),
cValue = (string)x.Descendants("Condition").FirstOrDefault().Attribute("value"),
f1 = (string)z.Element("field"),
c1 = (string)z.Element("comparison"),
v1 = (string)z.Element("value")
}))).ToList();
foreach (var cur in results)
{
Console.WriteLine("build_machine='{0}', process_name='{1}', condition name='{2}', condition value = '{3}', field='{4}', comparison='{5}', value='{6}'",
cur.buildMach, cur.p1, cur.cName, cur.cValue, cur.f1, cur.c1, cur.v1);

//get log data out to compare
if((cur.buildMach == "mach46") && (cur.p1 == "SpinISProjectVersionStats"))
{
Console.WriteLine("here"); //*at this point I see cur.cName=VersionFile which is wrong
}
//ParseLogFile(codeFreezeTime/*, versionChangeTime*/, cur.buildMach, cur.p1, cur.cName, cur.cValue, cur.f1, cur.c1, cur.v1);
}

}

Вот как выглядит мой XML:


19:00

mach31

SpinFileVersionStats



Status
equal
Success





SpinFileVersionStats



Status
equal
Success






SpinFileVersionStats



Status
equal
Success









mach46

SpinFileVersionStats



Status
equal
Success





SpinFileVersionStats



Status
equal
Success






SpinFileVersionStats




Status
equal
Success







SpinFileVersionStats



Status
equal
Success





SpinFileVersionStats




Status
equal
Success






SpinFileVersionStats




Status
equal
Success







SpinFileVersionStats



Status
equal & l t ; ! - - c a n ' t u s e & g t ; = h e r e - - & g t ; < b r / > & l t ; v a l u e & g t ; S u c c e s s & l t ; / v a l u e & g t ; < b r / > & l t ; / S u c c e s s C r i t e r i a & g t ; < b r / > & l t ; / C o n d i t i o n & g t ; < b r / > & l t ; / C o n d i t i o n s & g t ; < b r / > & l t ; / P r o c e s s & g t ; < b r / > & l t ; P r o c e s s & g t ; < b r / > & l t ; P r o c e s s N a m e & g t ; S p i n F i l e V e r s i o n S t a t s & l t ; / P r o c e s s N a m e & g t ; < b r / > & l t ; C o n d i t i o n s & g t ; < b r / > & l t ; C o n d i t i o n < b r / > n a m e = ' V e r s i o n F i l e ' v a l u e = & q u o t ; \ \ v i e w \ B u i l d _ N i g h t l y D e v e l o p e r \ K \ f i l e n a m e 2 2 . c s & q u o t ; & g t ; < b r / > < b r / > & l t ; S u c c e s s C r i t e r i a & g t ; < b r / > Status
equal
Success






SpinFileVersionStats




Status
equal
Success







SpinISProjectVersionStats




Status
equal
Success






SpinISProjectVersionStats




Status
equal
Success






SpinISProjectVersionStats




Status
equal
Success






GetSWStats




UpdateRequired
equal
YES







Status
equal
Successful







ParseISLogStats



Projects
equal
33




Projects
equal
8


Status
equal
Success





UpdateBuildArea-Stats




Dir
equal
Retail






eSecs
greaterThan
0









Подробнее здесь: https://stackoverflow.com/questions/783 ... using-linq
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»