Это зависит от того, будет ли когда-либо valueRequired
иметь неприятное значение, такое как '
. Но для простых значений это должно работать хорошо.
В остальном, LINQ-to-XML довольно хорош:
// where parentNode is XElement
var node = (from el in parentNode.Elements("field1").Elements("field2")
where (string) el.Attribute("attributeName") == valueRequired
select el).FirstOrDefault();
(замените (string)
другими типами, если необходимо)
Вот что-то похожее с использованием LINQ поверх XmlElement:
var parentNode = node.SelectNodes("./field1/field2[@attributeName]")
.Cast<XmlElement>()
.Where(el => el.GetAttribute("attributeName") == valueRequired)
.FirstOrDefault();
Другой вариант (без any LINQ) - просто цикл вручную с помощью foreach.