C# 检查名称属性中是否存在值 XDocument xmlDoc=XDocument.Load(xmlFile); bool exists=(来自xmlDoc.substands(“根”)中的元素) 其中elem.Element(“data”).Attribute(“name”).Value==“ID1” 选择elem).Any();
它没有看到ID1已经存在。我做错了什么?根据您所展示的内容,首先我必须指出XML片段不是有效的XML。C# 检查名称属性中是否存在值 XDocument xmlDoc=XDocument.Load(xmlFile); bool exists=(来自xmlDoc.substands(“根”)中的元素) 其中elem.Element(“data”).Attribute(“name”).Value==“ID1” 选择elem).Any();,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,它没有看到ID1已经存在。我做错了什么?根据您所展示的内容,首先我必须指出XML片段不是有效的XML。数据节点未关闭 假设这是一个有效的XML文档,它最终将取决于变量XMLDoc的类型 如果它是XDocument,那么该代码段应该可以工作,的值应该是true。该文档包含一个名为root的子体,它可以处理自己的事务 另一方面,如果它是一个XElement,那么该代码段应该失败,exists的值将是false。XMLDoc变量将引用root元素,显然没有任何称为root的子元素 但是,您应该重写查询
数据
节点未关闭
假设这是一个有效的XML文档,它最终将取决于变量XMLDoc
的类型
如果它是XDocument
,那么该代码段应该可以工作,的值应该是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
根据您所展示的内容,首先我必须指出XML片段不是有效的XML。数据
节点未关闭
假设这是一个有效的XML文档,它最终将取决于变量XMLDoc
的类型
如果它是XDocument
,那么该代码段应该可以工作,的值应该是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
XMLDoc
的类型是什么?它是XDocument
还是XElement
?这是您真正的XML吗?它不是有效的XML(数据
节点未关闭)。XMLDoc
的类型是什么?它是XDocument
还是XElement
?这是您真正的XML吗?它不是有效的XML(数据
节点未关闭)。因此您的工作正常。为什么我的不行?顺便说一句,谢谢你的洞察力!我认为杀死你的代码的是你在迭代根
元素,而不是数据
元素,这就是我建议重写的原因。您的代码将只检查第一个数据
元素,而忽略其余元素。您的XML可能有不同的顺序,这可以解释它失败的原因。为什么我的不行?顺便说一句,谢谢你的洞察力!我认为杀死你的代码的是你在迭代根
元素,而不是数据
元素,这就是我建议重写的原因。您的代码将只检查第一个数据
元素,而忽略其余元素。您的XML可能具有不同的顺序,这可以解释它失败的原因。