我已经生成了这样的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>
我的目标是获得IDWork
,numRequest
等元素。我试着这样做:
foreach (XElement el in doc.Root.Elements())
{
if (el.Name == "Single_Request")
{
string num = el.Elements("numRequest").Value;
// but he says, that he cant do this .Value because it doest exist at all
}
}
如何解决这个问题?
答案 0 :(得分:2)
您有此错误,因为Elements("numRequest")
返回元素集合,而不是单个元素。您应该使用Element("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