2つのXMLファイルを取得して1つにマージするアプリケーションの開発に取り組んでいます。現在、XMLファイルを生成できますが、希望どおりにフォーマットされておらず、現在、レンガの壁にぶつかっています。
- アプリケーションは2つのXMLファイルを読み取り、XMLファイルの1つから各スタッフメンバーのレコードを調べます。
- 最初のXMLファイルの各スタッフメンバーレコード
- 2番目のXMLで対応するレコードを検索します
- 検出されると、一連の新しいノードが生成され、2番目のXMLファイルからの情報が入力されます。
これらの新しいノードを特定の時点で関連するスタッフレコードに配置したいと思います(現在は、XMLドキュメントの下部にすべてをダンプするだけです)。
私が抱えている問題は、2番目のxmlから対応するデータを取得して、最初のxmlファイルからのデータと一緒に配置することです。ご覧のとおり、ドキュメントの下部に配置されており、関連するレコード(生成された出力)にリンクされていません。データは上に表示されます。現時点でこれを行う方法がわかりません。提案をいただければ幸いです。ありがとう
PHP
<?php
$schoolExtract = new DOMDocument;
$schoolExtract->load('schoolExtract.xml');
$kcsExtract = new DOMDocument;
$kcsExtract->preserveWhiteSpace = false;
$kcsExtract->load('kcsFinalExtract.xml');
$xp = new DOMXPath($kcsExtract);
header("Content-Type: text/plain");
$kcsUserRecord = $kcsExtract->getElementsByTagName( "StaffDetails" );
$schoolRecord = $schoolExtract->getElementsByTagName( "StaffDetails" );
$schoolRecordCount = $schoolExtract->getElementsByTagName( "SchoolWorkforceMember" );
$noRecords = $schoolRecordCount->length;
set_time_limit(0);
$i = 0;
foreach($schoolRecord as $row2)
{
$foundRecord = 0;
$NationalInsuranceSE = $row2->getElementsByTagName("NINumber")->item(0)->nodeValue;
$StaffMemberNameSE = $row2->getElementsByTagName("PersonFamilyName")->item(0)->nodeValue;
$PersonGivenNameSE = $row2->getElementsByTagName("PersonGivenName")->item(0)->nodeValue;
$DOBSE = $row2->getElementsByTagName("PersonBirthDate")->item(0)->nodeValue;
$newDOBSE = date("d/m/Y", strtotime($DOBSE));
foreach($kcsUserRecord as $row4)
{
$NationalInsuranceKCS = $row4->getElementsByTagName("NationalInsurance")->item(0)->nodeValue;
$StaffMemberNameKCS = $row4->getElementsByTagName("StaffMemberName")->item(0)->nodeValue;
$DOBKCS = $row4->getElementsByTagName("PersonBirthDate")->item(0)->nodeValue;
if($NationalInsuranceSE == $NationalInsuranceKCS && $StaffMemberNameSE == $StaffMemberNameKCS){
$foundRecord = 1;
$xpQuery = $xp->query('/KCSExtract/StaffRecord[StaffDetails/NationalInsurance="'. $NationalInsuranceKCS . '"]');
foreach ($xpQuery as $item)
{
$newItem = $schoolExtract->documentElement->appendChild(
$schoolExtract->createElement('ContractOrServiceGroup')
);
foreach (array('ContractType', 'ContractStart', 'ContractEnd','Post', 'SchoolArrivalDate', 'DestinationCode', 'Origin', 'LASchoolLevel', 'Estab', 'PostLevelDetails', 'Roles') as $elementName) {
$newItem->appendChild(
$schoolExtract->importNode(
$item->getElementsByTagName($elementName)->item(0),
true
)
);
}
}
$i++;
}
}
if($foundRecord == 1){
/*No Handlers in place yet*/
}
else if($foundRecord == 0){
/*No Handlers in place yet*/
}
}
$schoolExtract->formatOutput = true;
echo $schoolExtract->saveXml();
?>
schoolExtract.xml
<Members>
<SchoolWorkforceMembers>
<SchoolWorkforceMember>
<StaffDetails>
<TeacherNumber>123456</TeacherNumber>
<StaffMemberName>
<PersonFamilyName>Wayne</PersonFamilyName>
<GivenNames>
<GivenName>
<PersonGivenName>Bruce</PersonGivenName>
</GivenName>
</GivenNames>
</StaffMemberName>
<NINumber>BW123456</NINumber>
<GenderCurrent>2</GenderCurrent>
<PersonBirthDate>1974-08-07</PersonBirthDate>
<Ethnicity>WBRI</Ethnicity>
<Disability>NOBT</Disability>
<QTStatus>true</QTStatus>
<HLTAStatus>false</HLTAStatus>
</StaffDetails>
<Absences>
<Absence>
<FirstDayOfAbsence>2011-09-05</FirstDayOfAbsence>
<LastDayOfAbsence>2011-10-30</LastDayOfAbsence>
<WorkingDaysLost>033.0</WorkingDaysLost>
<AbsenceCategory>SIC</AbsenceCategory>
<Estab>6905</Estab>
</Absence>
<Absence>
<FirstDayOfAbsence>2012-01-17</FirstDayOfAbsence>
<LastDayOfAbsence>2012-01-17</LastDayOfAbsence>
<AbsenceCategory>OTH</AbsenceCategory>
<Estab>6905</Estab>
</Absence>
</Absences>
</SchoolWorkforceMember>
<SchoolWorkforceMember>
<StaffDetails>
<TeacherNumber>123456</TeacherNumber>
<StaffMemberName>
<PersonFamilyName>Parker</PersonFamilyName>
<GivenNames>
<GivenName>
<PersonGivenName>Peter</PersonGivenName>
</GivenName>
</GivenNames>
</StaffMemberName>
<NINumber>SM123456</NINumber>
<GenderCurrent>2</GenderCurrent>
<PersonBirthDate>1974-08-07</PersonBirthDate>
<Ethnicity>WBRI</Ethnicity>
<Disability>NOBT</Disability>
<QTStatus>true</QTStatus>
<HLTAStatus>false</HLTAStatus>
</StaffDetails>
<Absences>
<Absence>
<FirstDayOfAbsence>2011-09-05</FirstDayOfAbsence>
<LastDayOfAbsence>2011-10-30</LastDayOfAbsence>
<WorkingDaysLost>033.0</WorkingDaysLost>
<AbsenceCategory>SIC</AbsenceCategory>
<Estab>6905</Estab>
</Absence>
<Absence>
<FirstDayOfAbsence>2012-01-17</FirstDayOfAbsence>
<LastDayOfAbsence>2012-01-17</LastDayOfAbsence>
<AbsenceCategory>OTH</AbsenceCategory>
<Estab>6905</Estab>
</Absence>
</Absences>
</SchoolWorkforceMember>
</SchoolWorkforceMembers>
</Members>
kcsFinalExtract.xml
<KCSExtract>
<StaffRecord>
<StaffDetails>
<NationalInsurance>BW123456</NationalInsurance>
<PersonBirthDate>1974-08-07</PersonBirthDate>
<StaffMemberName>Wayne</StaffMemberName>
<PersonGivenName>Bruce</PersonGivenName>
</StaffDetails>
<ContractOrServiceGroup>
<ContractOrService>
<ContractType>PRM</ContractType>
<ContractStart>01/09/2003</ContractStart>
<ContractEnd></ContractEnd>
<Post>TCH</Post>
<SchoolArrivalDate>01/12/2007</SchoolArrivalDate>
<DestinationCode>TU</DestinationCode>
<Origin>NOTKNW</Origin>
<LASchoolLevel></LASchoolLevel>
<Estab></Estab>
<PostLevelDetails>
<Payments>
<Scale>TU</Scale>
<RegionSpine>EW</RegionSpine>
<SpinePoint>U2</SpinePoint>
<TotalPay>35,447.00</TotalPay>
<SafeguardedSalary>FALSE</SafeguardedSalary>
</Payments>
<Hours>
<Hours>32.5</Hours>
<FTEHours>32.5</FTEHours>
<WeeksPerYear>52</WeeksPerYear>
</Hours>
</PostLevelDetails>
<Roles>
<Role>
<RoleIdentifier>TCHR</RoleIdentifier>
</Role>
</Roles>
</ContractOrService>
</ContractOrServiceGroup>
</StaffRecord>
<StaffRecord>
<StaffDetails>
<NationalInsurance>SM123456</NationalInsurance>
<PersonBirthDate>03/01/1971</PersonBirthDate>
<StaffMemberName>Parker</StaffMemberName>
<PersonGivenName>Peter</PersonGivenName>
</StaffDetails>
<ContractOrServiceGroup>
<ContractOrService>
<ContractType>PRM</ContractType>
<ContractStart>01/09/2003</ContractStart>
<ContractEnd></ContractEnd>
<Post>TCH</Post>
<SchoolArrivalDate>01/12/2007</SchoolArrivalDate>
<DestinationCode>TU</DestinationCode>
<Origin>NOTKNW</Origin>
<LASchoolLevel></LASchoolLevel>
<Estab></Estab>
<PostLevelDetails>
<Payments>
<Scale>TU</Scale>
<RegionSpine>EW</RegionSpine>
<SpinePoint>U2</SpinePoint>
<TotalPay>35,447.00</TotalPay>
<SafeguardedSalary>FALSE</SafeguardedSalary>
</Payments>
<Hours>
<Hours>32.5</Hours>
<FTEHours>32.5</FTEHours>
<WeeksPerYear>52</WeeksPerYear>
</Hours>
</PostLevelDetails>
<Roles>
<Role>
<RoleIdentifier>TCHR</RoleIdentifier>
</Role>
</Roles>
</ContractOrService>
</ContractOrServiceGroup>
</StaffRecord>
</KCSExtract>
生成された出力
<?xml version="1.0"?>
<Members>
<SchoolWorkforceMembers>
<SchoolWorkforceMember>
<StaffDetails>
<TeacherNumber>123456</TeacherNumber>
<StaffMemberName>
<PersonFamilyName>Wayne</PersonFamilyName>
<GivenNames>
<GivenName>
<PersonGivenName>Bruce</PersonGivenName>
</GivenName>
</GivenNames>
</StaffMemberName>
<NINumber>BW123456</NINumber>
<GenderCurrent>2</GenderCurrent>
<PersonBirthDate>1974-08-07</PersonBirthDate>
<Ethnicity>WBRI</Ethnicity>
<Disability>NOBT</Disability>
<QTStatus>true</QTStatus>
<HLTAStatus>false</HLTAStatus>
</StaffDetails>
<Absences>
<Absence>
<FirstDayOfAbsence>2011-09-05</FirstDayOfAbsence>
<LastDayOfAbsence>2011-10-30</LastDayOfAbsence>
<WorkingDaysLost>033.0</WorkingDaysLost>
<AbsenceCategory>SIC</AbsenceCategory>
<Estab>6905</Estab>
</Absence>
<Absence>
<FirstDayOfAbsence>2012-01-17</FirstDayOfAbsence>
<LastDayOfAbsence>2012-01-17</LastDayOfAbsence>
<AbsenceCategory>OTH</AbsenceCategory>
<Estab>6905</Estab>
</Absence>
</Absences>
</SchoolWorkforceMember>
<SchoolWorkforceMember>
<StaffDetails>
<TeacherNumber>123456</TeacherNumber>
<StaffMemberName>
<PersonFamilyName>Parker</PersonFamilyName>
<GivenNames>
<GivenName>
<PersonGivenName>Peter</PersonGivenName>
</GivenName>
</GivenNames>
</StaffMemberName>
<NINumber>SM123456</NINumber>
<GenderCurrent>2</GenderCurrent>
<PersonBirthDate>1974-08-07</PersonBirthDate>
<Ethnicity>WBRI</Ethnicity>
<Disability>NOBT</Disability>
<QTStatus>true</QTStatus>
<HLTAStatus>false</HLTAStatus>
</StaffDetails>
<Absences>
<Absence>
<FirstDayOfAbsence>2011-09-05</FirstDayOfAbsence>
<LastDayOfAbsence>2011-10-30</LastDayOfAbsence>
<WorkingDaysLost>033.0</WorkingDaysLost>
<AbsenceCategory>SIC</AbsenceCategory>
<Estab>6905</Estab>
</Absence>
<Absence>
<FirstDayOfAbsence>2012-01-17</FirstDayOfAbsence>
<LastDayOfAbsence>2012-01-17</LastDayOfAbsence>
<AbsenceCategory>OTH</AbsenceCategory>
<Estab>6905</Estab>
</Absence>
</Absences>
</SchoolWorkforceMember>
</SchoolWorkforceMembers>
<ContractOrServiceGroup><ContractType>PRM</ContractType><ContractStart>01/09/2003</ContractStart><ContractEnd/><Post>TCH</Post><SchoolArrivalDate>01/12/2007</SchoolArrivalDate><DestinationCode>TU</DestinationCode><Origin>NOTKNW</Origin><LASchoolLevel/><Estab/><PostLevelDetails><Payments><Scale>TU</Scale><RegionSpine>EW</RegionSpine><SpinePoint>U2</SpinePoint><TotalPay>35,447.00</TotalPay><SafeguardedSalary>FALSE</SafeguardedSalary></Payments><Hours><Hours>32.5</Hours><FTEHours>32.5</FTEHours><WeeksPerYear>52</WeeksPerYear></Hours></PostLevelDetails><Roles><Role><RoleIdentifier>TCHR</RoleIdentifier></Role></Roles></ContractOrServiceGroup><ContractOrServiceGroup><ContractType>PRM</ContractType><ContractStart>01/09/2003</ContractStart><ContractEnd/><Post>TCH</Post><SchoolArrivalDate>01/12/2007</SchoolArrivalDate><DestinationCode>TU</DestinationCode><Origin>NOTKNW</Origin><LASchoolLevel/><Estab/><PostLevelDetails><Payments><Scale>TU</Scale><RegionSpine>EW</RegionSpine><SpinePoint>U2</SpinePoint><TotalPay>35,447.00</TotalPay><SafeguardedSalary>FALSE</SafeguardedSalary></Payments><Hours><Hours>32.5</Hours><FTEHours>32.5</FTEHours><WeeksPerYear>52</WeeksPerYear></Hours></PostLevelDetails><Roles><Role><RoleIdentifier>TCHR</RoleIdentifier></Role></Roles></ContractOrServiceGroup></Members>
必要な出力
<Members>
<SchoolWorkforceMembers>
<SchoolWorkforceMember>
<StaffDetails>
<TeacherNumber>123456</TeacherNumber>
<StaffMemberName>
<PersonFamilyName>Wayne</PersonFamilyName>
<GivenNames>
<GivenName>
<PersonGivenName>Bruce</PersonGivenName>
</GivenName>
</GivenNames>
</StaffMemberName>
<NINumber>BW123456</NINumber>
<GenderCurrent>2</GenderCurrent>
<PersonBirthDate>1974-08-07</PersonBirthDate>
<Ethnicity>WBRI</Ethnicity>
<Disability>NOBT</Disability>
<QTStatus>true</QTStatus>
<HLTAStatus>false</HLTAStatus>
</StaffDetails>
<ContractOrServiceGroup>
<ContractOrService>
<ContractType>PRM</ContractType>
<ContractStart>01/09/2003</ContractStart>
<ContractEnd></ContractEnd>
<Post>TCH</Post>
<SchoolArrivalDate>01/12/2007</SchoolArrivalDate>
<DestinationCode>TU</DestinationCode>
<Origin>NOTKNW</Origin>
<LASchoolLevel></LASchoolLevel>
<Estab></Estab>
<PostLevelDetails>
<Payments>
<Scale>TU</Scale>
<RegionSpine>EW</RegionSpine>
<SpinePoint>U2</SpinePoint>
<TotalPay>35,447.00</TotalPay>
<SafeguardedSalary>FALSE</SafeguardedSalary>
</Payments>
<Hours>
<Hours>32.5</Hours>
<FTEHours>32.5</FTEHours>
<WeeksPerYear>52</WeeksPerYear>
</Hours>
</PostLevelDetails>
<Roles>
<Role>
<RoleIdentifier>TCHR</RoleIdentifier>
</Role>
</Roles>
</ContractOrService>
</ContractOrServiceGroup>
<Absences>
<Absence>
<FirstDayOfAbsence>2011-09-05</FirstDayOfAbsence>
<LastDayOfAbsence>2011-10-30</LastDayOfAbsence>
<WorkingDaysLost>033.0</WorkingDaysLost>
<AbsenceCategory>SIC</AbsenceCategory>
<Estab>6905</Estab>
</Absence>
<Absence>
<FirstDayOfAbsence>2012-01-17</FirstDayOfAbsence>
<LastDayOfAbsence>2012-01-17</LastDayOfAbsence>
<AbsenceCategory>OTH</AbsenceCategory>
<Estab>6905</Estab>
</Absence>
</Absences>
</SchoolWorkforceMember>
<SchoolWorkforceMember>
<StaffDetails>
<TeacherNumber>123456</TeacherNumber>
<StaffMemberName>
<PersonFamilyName>Parker</PersonFamilyName>
<GivenNames>
<GivenName>
<PersonGivenName>Peter</PersonGivenName>
</GivenName>
</GivenNames>
</StaffMemberName>
<NINumber>SM123456</NINumber>
<GenderCurrent>2</GenderCurrent>
<PersonBirthDate>1974-08-07</PersonBirthDate>
<Ethnicity>WBRI</Ethnicity>
<Disability>NOBT</Disability>
<QTStatus>true</QTStatus>
<HLTAStatus>false</HLTAStatus>
</StaffDetails>
<ContractOrServiceGroup>
<ContractOrService>
<ContractType>PRM</ContractType>
<ContractStart>01/09/2003</ContractStart>
<ContractEnd></ContractEnd>
<Post>TCH</Post>
<SchoolArrivalDate>01/12/2007</SchoolArrivalDate>
<DestinationCode>TU</DestinationCode>
<Origin>NOTKNW</Origin>
<LASchoolLevel></LASchoolLevel>
<Estab></Estab>
<PostLevelDetails>
<Payments>
<Scale>TU</Scale>
<RegionSpine>EW</RegionSpine>
<SpinePoint>U2</SpinePoint>
<TotalPay>35,447.00</TotalPay>
<SafeguardedSalary>FALSE</SafeguardedSalary>
</Payments>
<Hours>
<Hours>32.5</Hours>
<FTEHours>32.5</FTEHours>
<WeeksPerYear>52</WeeksPerYear>
</Hours>
</PostLevelDetails>
<Roles>
<Role>
<RoleIdentifier>TCHR</RoleIdentifier>
</Role>
</Roles>
</ContractOrService>
</ContractOrServiceGroup>
<Absences>
<Absence>
<FirstDayOfAbsence>2011-09-05</FirstDayOfAbsence>
<LastDayOfAbsence>2011-10-30</LastDayOfAbsence>
<WorkingDaysLost>033.0</WorkingDaysLost>
<AbsenceCategory>SIC</AbsenceCategory>
<Estab>6905</Estab>
</Absence>
<Absence>
<FirstDayOfAbsence>2012-01-17</FirstDayOfAbsence>
<LastDayOfAbsence>2012-01-17</LastDayOfAbsence>
<AbsenceCategory>OTH</AbsenceCategory>
<Estab>6905</Estab>
</Absence>
</Absences>
</SchoolWorkforceMember>
</SchoolWorkforceMembers>
</Members>