私は以下のXMLを持っています。データを取得する最良の方法は何ですか?LinqでXMLにデータを取得するには?
<?xml version='1.0' encoding='UTF-8'?>
<Root>
<EmployeeDataRoot>
<EmployeeData>
<Employee_id>123456</Employee_id>
<Employee_Status>A</Employee_Status>
<Business_Unit>EN00</Business_Unit>
<Cost_Center>0904/1992</Cost_Center>
<Work_Location>DFW</Work_Location>
<Location>DFW-HDQ1</Location>
<Job_Category>0003</Job_Category>
<Last_Name>John</Last_Name>
<First_Name>Doe</First_Name>
<Middle_Name />
<Preferred_Name />
<Position_Title>Programmer/Analyst</Position_Title>
<Legal_Entity>EN00</Legal_Entity>
<Department_Unit>IT HR & Employee Technology</Department_Unit>
<Run_Date>2016-12-12</Run_Date>
</EmployeeData>
</EmployeeDataRoot>
<Footer_No_of_Records>
<Records>1</Records>
</Footer_No_of_Records>
</Root>
は、オンラインでいくつかの例を見た後、私はこれらの2回の反復を試してみましたが、私はの性質を見渡したオブジェクト
のインスタンスに設定されていないエラー
オブジェクトを取得します私の
Employee
クラスとスペルが間違っていて、ノードが表示されませんでした。私はエラーが私はXMLを適切に照会していないと思う。var xDoc = XDocument.Load(file.FullName); listEmployee = (from e in xDoc.Descendants("EmployeeData") select new Employee { EmployeeID = e.Element("Employee_ID").Value, EmployeeStatus = e.Element("Employee_Status").Value, BusinessUnit = e.Element("Business_Unit").Value, CostCenter = e.Element("Cost_Center").Value, WorkLocation = e.Element("Work_Location").Value, Location = e.Element("Location").Value, JobCategory = e.Element("Job_Category").Value, FirstName = e.Element("First_Name").Value, LastName = e.Element("Last_Name").Value, LegalEntity = e.Element("Legal_Entity").Value } ).ToList();
と私も
listEmployee = (from e in xDoc.Element("Root").Elements("EmployeeDataRoot/EmployeeData") select new Employee { EmployeeID = e.Element("Employee_ID").Value, EmployeeStatus = e.Element("Employee_Status").Value, BusinessUnit = e.Element("Business_Unit").Value, CostCenter = e.Element("Cost_Center").Value, WorkLocation = e.Element("Work_Location").Value, Location = e.Element("Location").Value, JobCategory = e.Element("Job_Category").Value, FirstName = e.Element("First_Name").Value, LastName = e.Element("Last_Name").Value, LegalEntity = e.Element("Legal_Entity").Value } ).ToList();
私のspidey senseは、要素名が 'Employee_id'であるため、' e.Element( "Employee_ID") 'がnullであることを示しています。 'Element()'呼び出しを初期化構文に埋め込むのではなく、別々の行に置くと、これらの問題はより簡単にデバッグできます。または、インラインヌルチェックを追加する( 'e.Element(" First_Name ")== null?" ":e.Element(" First_Name ").Value') –