Исходя из того, что вы показали, сначала я должен указать, что фрагмент XML не является допустимым XML.Узлы data
не закрыты.
Если предположить, что это действительный документ XML, это в конечном итоге будет зависеть от типа вашей переменной XMLDoc
.
Если бы это был XDocument
, тогда этот фрагмент кода должен работать, и значение exists
будет true
.Документ содержит потомка с именем root
, и он может заниматься своими делами.
Если с другой стороны это был XElement
, то этот фрагмент кода должен завершиться ошибкой, и значение exists
будет равноfalse
.Переменная XMLDoc
уже ссылалась бы на элемент root
, и, очевидно, нет никаких потомков с именем root
.
Однако вы должны переписать свой запрос, возможно, что-то более похожее на это:
// please follow .NET naming conventions and use lowercase for local variables
XDocument xmlDoc = XDocument.Load(xmlFile);
// iterate over the `data` elements, not the `root` elements
bool exists = (from data in xmlDoc.Element("root").Elements("data")
where (string)data.Attribute("name") == "ID1"
select data).Any();
// using the cast is a personal style choice
// using `XAttribute.Value` is fine too in this case