如果属性不存在,如何使用LINQ-to-XML从XML属性转换Int值?

时间:2013-12-26 17:19:11

标签: xml linq-to-xml

如果属性不存在,如何将属性的值分配给类? 如果属性存在,Convert.ToInt32工作正常但是当它不存在时我被告知最好使用Cast,但是转换不适用于整数:

string xml = GetXmlContent();
TextReader tr = new StringReader(xml);
XDocument doc = XDocument.Load(tr);
var server = doc.Descendants("server")
   .Select(x => new RunningValueServer
   {
     created            = DateTime.Now,
     productName        = (string)x.Attribute("productName"),
   //nlbHostPriority    = (int)x.Attribute("nlbHostPriority"), //this wont work
     nlbHostPriority    = Convert.ToInt32(x.Attribute("nlbHostPriority").Value),
...

有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

如果该属性不存在,您想要哪个值?如果这是一个选项,您可以转为int?而不是int。{/ 1}}。

如果nlbHostPriority = (int?)x.Attribute("nlbHostPriority")不是选项,请使用int?。当然,如果属性不存在,您可以将nlbHostPriority = (int?)x.Attribute("nlbHostPriority")??0替换为要分配的任何整数值。