LINQ возвращает значение null для некоторого чтения XMLC#

Место общения программистов C#
Ответить
Anonymous
 LINQ возвращает значение null для некоторого чтения XML

Сообщение Anonymous »

Раньше чтение XML с помощью linq работало отлично, но недавно я изменил свой XML (команда хотела более плоский XML), и теперь формат такой:

Код: Выделить всё



us@co.com
me@co.com
me@co.com
info.co.net
VerifyBuildVerbose.txt
Stats.txt
proj
1.0


19:00

startTimeHeader="StartTime"
endTimeHeader="EndTime"
failureColumns="ErrorDescription">



Status
equal
Success






Я пытаюсь изменить свой LINQ, который читает этот XML-файл. Существует несколько условий для включения некоторых процессов в мой список. Кроме того, в некоторых случаях в список можно включить несколько критериев успеха.
Вот что у меня сейчас есть для LINQ:

Код: Выделить всё

string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string newPath = Path.GetFullPath(Path.Combine(path, @"..\.."));
string finalPathXmlb = Path.GetFullPath(Path.Combine(newPath, configFileName));
XDocument xmlDoc2 = XDocument.Load(finalPathXmlb);
var results1 =
xmlDoc2.Descendants("BuildVerification")
.SelectMany(a => a.Descendants("build")
.SelectMany(b => b.Descendants("Process")
.Select(p => new ProcessValidationInfo
{
codeFreezeTime = b.Parent.Element("codeFreezeTime")?.Value,
buildMach = a.Element("machine")?.Value,
p1 = p.Element("name")?.Value,
startTimeHeader = p.Element("startTimeHeader")?.Value,
endTimeHeader = p.Element("endTimeHeader")?.Value,
failureColumns = p.Element("failureColumns")?.Value,
conditionList = p.Descendants("Condition")
.Select(c => new Condition
{
cName = c.Attribute("name")?.Value,
cValue = c.Attribute("value")?.Value,
cValueAlternate = c.Attribute("alternateValue")?.Value
})
.ToList(),
successCriteriaList = p.Descendants("SuccessCriteria")
.Select(sc => new SuccessCriteria
{
f1 = sc.Element("field")?.Value,
c1 = sc.Element("comparison")?.Value,
v1 = sc.Element("value")?.Value,
alt_v1 = sc.Element("alternateValue")?.Value
})
.ToList()
}))).ToList();
Но сейчас есть несколько значений, которые имеют значение NULL. Я попытался изменить linq, чтобы получить недостающую информацию, но она по-прежнему равна нулю.
Проблема: buildMach, endTimeheader, startTimeHeader, errorColumns и p1 в результатах имеют нулевое значение.Я смотрел, как linq возвращает значение null, что кажется похожим, но я попытался изменить свой Linq, чтобы использовать BuildVerification (ранее использовалась часть сборки для потомков) для части xmlDoc2.Descendants, но это ничего не исправило .
Условия и критерии успеха в настоящее время считываются в свои списки нормально.
Для получения дополнительной информации об этом, например о классах, хранящих XML, см. классы, хранящие xml.

Подробнее здесь: https://stackoverflow.com/questions/786 ... e-xml-read
Ответить

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

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

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

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

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