这是一个XML元素"检查"与儿童元素"司机","车辆"和"违反",我需要属性值。 我需要为每个检查创建一条记录,该记录还包含其他元素的属性值。
<inspection inspection_date="2012-07-08" report_state="IL" report_number="ILP4E1014879" level="1" time_weight="1">
<driver first_name="MELVIN" last_name="DANIELS" date_of_birth="1976-12-20" license_state="IL" License_number="D8505003"></driver>
<vehicle vehicle_id_number="1HSCNAPR74C501842" unit_type="Truck Tractor" license_state="IL" license_number="1234567"></vehicle>
<violations>
<violation code="122.4B2C" description="Lights" oos="N" basic="Vehicle Maint." severity_weight="4"></violation>
</violations>
</inspection>
这是一个片段:
dotinspections = from el in inspectionList
select el;
foreach (var el in dotinspections)
{
if (el.Attribute("inspection_date") != null && el.Attribute("inspection_date").Value != null)
{ insDate = Convert.ToDateTime(el.Attribute("inspection_date").Value); }
state = el.Attribute("report_state") != null && (string)el.Attribute("report_state").Value != null ? el.Attribute("report_state").Value.Replace("'", "''") : null;
insNumber = el.Attribute("report_number") != null && el.Attribute("report_number").Value != null ? el.Attribute("report_number").Value.Replace("'", "''") : null;
if (el.Attribute("level") != null && el.Attribute("level").Value != null)
{ insLevel = Convert.ToInt32(el.Attribute("level").Value); }
这些是在IEnumerable&#34; dotinspections&#34;中。我已经尝试了几乎所有使用.Elements,.Descendants,.Attributes等的方法,但只能获得检查记录,然后是驱动程序记录,然后是车辆等等,而不是每次完整检查的一条记录。
每次检查我如何获得一条记录?
答案 0 :(得分:0)
获得的经验 - 感谢webdad3。 我没有发布我的所有代码(为了简洁起见)。问题是我没有深入到嵌套的XElements。我需要添加&#34;违规行为&#34;和&#34;车辆&#34;和我的属性的其他祖先:
licenseNumber1 = el.Element("vehicle").Attribute("license_number") != null && el.Element("vehicle").Attribute("license_number").Value != null ? el.Element("vehicle").Attribute("license_number").Value.Replace("'", "''") : null;
code = el.Element("violations").Element("violation").Attribute("code") != null && el.Element("violations").Element("violation").Attribute("code").Value != null ? el.Element("violations").Element("violation").Attribute("code").Value.Replace("'", "''") : null;
description = el.Element("violations").Element("violation").Attribute("description") != null && el.Element("violations").Element("violation").Attribute("description").Value != null ? el.Element("violations").Element("violation").Attribute("description").Value.Replace("'", "''") : null;