Ваша переменная eles
уже возвращает <t>
. Ни один из <t>
не имеет дочернего элемента, который является <t>
, поэтому имеет смысл, что x.Element(ns + "t")
ничего не возвращает (таким образом, null
, следовательно, .Value
является ошибкой). На самом деле, я немного запутался, потому что eles.Elements(ns + "t")
должна была быть пустой последовательностью.
Кроме того, значение в терминах C # равно <@Date>
; >
/ <
относится только к XML.
Кроме того, на запрос влияет тот, который <si>
не имеет <t>
; лучший вариант будет:
var eles = xmlDoc.Descendants(ns + "si").Elements(ns + "t");
(который обрабатывает 0, 1 или много <t>
за <si>
)
Тогда после этого вы имеете в виду:
eles.SingleOrDefault(x => x.Value == "<@Date>").Value = "hi";