LINQ查询中的异常处理

时间:2019-05-08 09:09:58

标签: c# xml exception

我有一个包含一堆对象的XML文件,该对象可以具有多个字段,例如:

<object>
  <obj_name>Car</obj_name>
  <field>
    <name>Brand</name>
    <type>string</type>
    <value>Volvo</value>
  </field>
  <field>
    <name>Power</name>
    <type>int</type>
    <value>200</value>
  </field>
</object>

我应该只从文件中读取具有名称和至少一个字段的对象。有效字段必须具有名称,类型(字符串或整数)和值。我写了这个查询:

var objects = from newobject in 
              XDocument.Load("input.xml").Descendants("object")
                     where (string)newobject.Element("obj_name") != ""
                     select new DataObject
                     {

                         Name = (string)newobject.Element("obj_name"),
                         Fields = new List<Field>(
                             from fields in newobject.Elements("field")
                             where (string)fields.Element("name") != ""
                             where (string)fields.Element("type") != "" && ((string)fields.Element("type") == "string" || (string)fields.Element("type") == "int")
                             where (string)fields.Element("value") != ""
                             select new Field
                             {
                                 Name = (string)fields.Element("name"),
                                 Type =  (string)fields.Element("type"),
                                 Value = (string)fields.Element("value")                                
                             })    
                     };

它可以正常工作,但问题是文件中还可以包含无效标记,例如<name>Bob</type>,这会导致异常。如何跳过带有损坏标签的对象/字段并处理此查询中的异常?

0 个答案:

没有答案