C# 如何正确使用LINQ到XML?
我已经生成了这样的C# 如何正确使用LINQ到XML?,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,我已经生成了这样的xml文件 <?xml version="1.0" encoding="utf-8"?> <Requestes> <Single_Request num="1"> <numRequest>212</numRequest> <IDWork>12</IDWork> <NumObject>21</NumObject> <lvlPrio
xml
文件
<?xml version="1.0" encoding="utf-8"?>
<Requestes>
<Single_Request num="1">
<numRequest>212</numRequest>
<IDWork>12</IDWork>
<NumObject>21</NumObject>
<lvlPriority>2</lvlPriority>
<NumIn1Period>21</NumIn1Period>
</Single_Request>
</Requestes>
如何修复此问题?您有此错误,因为
元素(“numRequest”)
返回元素集合,而不是单个元素。您应该使用元素(“numRequest”)
此外,我建议您使用查询按名称获取元素,而不是枚举所有元素并验证其名称:
var request = doc.Root.Element("Single_Request");
var num = (int)request.Element("numRequest");
通常使用匿名类型或自定义对象对从xml解析的值进行分组:
var query = from r in doc.Root.Elements("Single_Request")
where (int)r.Attribute("num") == 1 // condition
select new {
NumRequest = (int)request.Element("numRequest"),
IdWork = (int)request.Element("IDWork"),
NumObject = (int)request.Element("NumObject")
};
var request = query.SinlgleOrDefault();
// use request.IdWork
哦,谢谢,现在它工作了。)我需要弄清楚如何从
string
转换到int
)@Rocketq只是将元素转换为int
,而不是读取它的值。LINQ to XML将解析值并返回整数值,以供您参考@lazyberezovsky的帮助,现在它可以正常工作了。您可以使用subjects方法获取特定类型的所有节点,而不是循环遍历整个XML文件:doc.Root.subjects(“单次请求”)
var query = from r in doc.Root.Elements("Single_Request")
where (int)r.Attribute("num") == 1 // condition
select new {
NumRequest = (int)request.Element("numRequest"),
IdWork = (int)request.Element("IDWork"),
NumObject = (int)request.Element("NumObject")
};
var request = query.SinlgleOrDefault();
// use request.IdWork