2013-09-28 72 views
0

在我的C#程序中,我将xml文件中的汽车数据加载到汽车对象中。检查缺少的int值xml元素

这是我的xml文件:

<Car> 
    <CarID>1</CarID> 
    <CarName>Honda</CarName> 
    <CarColor>Blue</CarColor> 
    </Car> 
    <Car> 
    <CarName>Ford</CarName> 
    <CarColor>Yellow</CarColor> 
    </Car> 
    <Car> 
    <CarID>3</CarID> 
    <CarName>BMW</CarName> 
    <CarColor>Green</CarColor> 
    </Car> 

注意,第二辆车条目没有一个ID。所以我需要检查这个以避免一个空的异常。

我加载XML数据在我的C#代码:

 List<Car> Cars = 
(
    from el in XDocument.Load("XML_Files/cars.xml").Root.Elements("Car") 
    select new Car 
    { 
     CarID = (int)el.Element("CarID"), 
     CarName = (string)el.Element("CarName"), 
     CarColor = (string)el.Element("CarColor") 
    }).ToList(); 

我在另一个问题,要解决这个问题,对于字符串数据读取,我们替换此:

CarName = (string)el.Element("CarName") 

与此:

CarName = ((string)el.Element("CarName") != null) ? (string)el.Element("CarName") : string.Empty 

,对于字符串值正常工作,但我无法弄清楚是如何应用该L ogic为int值。

那么,如何修改此行:

CarID = (int)el.Element("CarID") 

为了测试空值?

我已经试过这种方式,但它不工作:

CarID = ((int)el.Element("CarID") >= 0) ? Convert.ToInt32(el.Element("CarID").Value) : 0 

有什么建议?

回答

1

你在两个例子中做了两个根本不同的检查。在string示例中,您正在检查元素是否为null。在int示例中,您假定它存在并直接跳转到检查整数值。首先检查它不是null就像你用string的例子。

CarID = (el.Element("CarID") != null) ? Convert.ToInt32(el.Element("CarID").Value) : 0; 
+0

太好了。谢谢! – Zolt