電話の連絡先のバックアップとなる XML ファイルがあり、電話番号が割り当てられている連絡先のみを取得するための php ファイルを作成しようとしています。ファイルには、さまざまなアプリケーションからの連絡先が含まれています。
XML には次の要素があります。
<Contact>
<Id>5238</Id>
<GivenName>friend1</GivenName>
<FullName>friendA</FullName>
<CreateTime>0001-01-01T00:00:00+00:00</CreateTime>
<ModifyTime>0001-01-01T00:00:00+00:00</ModifyTime>
<Starred>false</Starred>
<AccountName>SIM</AccountName>
<AccountType>com.anddroid.contacts.sim</AccountType>
</Contact>
<PhoneNumbers>
<Id>53</Id>
<ContactId>1380</ContactId>
<Name>2</Name>
<Value>07123456789</Value>
<Primary>2</Primary>
</PhoneNumbers>
<Contact>
<Id>328</Id>
<FamilyName>tee</FamilyName>
<GivenName>friend2</GivenName>
<FullName>friend2 tee</FullName>
<CreateTime>0001-01-01T00:00:00+00:00</CreateTime>
<ModifyTime>0001-01-01T00:00:00+00:00</ModifyTime>
<Picture>18948</Picture>
<Starred>false</Starred>
<AccountName>xxxxxxx@hotmail.com</AccountName>
<AccountType>com.htc.socialnetwork.facebook</AccountType>
</Contact>
そして、Contact から FullName を取得し、Contact/Id が PhoneNumbers/ContactId と一致する PhoneNumbers から Value を取得する php ファイルを作成したいと考えています。
このコードを作成しました:
<?php
$xml = simplexml_load_file("Contact.xml");
$i=0;
$k=0;
foreach ($xml->Contact as $contact) {
if ($contact->AccountName == "SIM"){
echo "Contact: " . $k . "<br /> "; echo $contact->nodeValue[$k] . "<br /> " . $contact->FullName . "<br /> ";
$k++;
}
}
foreach ($xml->PhoneNumbers as $number) {
echo "Contact: " . $i . "<br /> "; echo $number->Value . "<br /> ";
$i++;
}
?>
53 の連絡先と 173 の番号を出力します。入れないとif ($contact->AccountName == "SIM")
、同じ番号が出力されますが、700 ++の連絡先が出力されます。すでに電話番号を持っている連絡先のみを出力する関数または何かを作成するのに助けが欲しいだけです。
どんな助けでも大歓迎です。
ありがとうございました