Need to access an XML file from PHP

I've been trying to access an XML file using PHP's XML Reader but I am finding it very difficult.

An example of the XML file is below... (also attached)

What I need to know is how to access for example "EMAILADDRESS" or "LOCATIONDESC" field from the <Jobs> section

Any help would be much appreciated!


<?xml version="1.0" encoding="UTF-8"?>
<JobShopExport xmlns="http://tempuri.org/JSExport.xsd">
   <Jobs>
      <Job SysKey="0" DBID="79" RefNo="J142" Con="13" CONSULTANTNAME="USER8 " EMAILADDRESS="test@gp.vu" Sector="47" SECTORNAME="Main Sector" Title="Sales Consultant" Loc="204" LOCATIONDESC="Dudley,West Midlands" Term="4" EMPTYPEDESC="Perm" MinBsc="18000" MaxBsc="20000" MinPkg="0" MaxPkg="0" HoursPW="0" Cat="65" PUBCATDESC="Sales" LOCATIONCODE="SP10 4AE" GRIDREFX="43490" GRIDREFY="14670" SDate="" EDate="" LTDRATE="" PAYERATE="" Currency="0" CURRENCYSYMBOL="" Area="11" AREADESCRIPTION="S" CreatedOn="21/December/2005" UpdatedOn="19/May/2006" PubJobDesc="" PosID="106" POSITIONDESC="Sales Consultant" Company="Test Company Ltd" ChuntID="" ChargeUnitDesc="">
         <Atts>
            <Att AttID="162" Grade="0" />
            <Att AttID="105" Grade="0" />
            <Att AttID="106" Grade="0" />
         </Atts>
      </Job>
   </Jobs>
   <SysKeys>
      <Itm DBID="0" Desc="admin  " />
   </SysKeys>
   <Master_Atts>
      <Itm DBID="405" Desc="Position" />
      <Itm DBID="411" Desc="Qualifications" />
   </Master_Atts>
   <Att_Grades>
      <Itm DBID="0" Desc="" />
   </Att_Grades>
   <Sectors>
      <Itm DBID="47" Desc="Main Sector" />
   </Sectors>
   <EmpTerms>
      <Itm DBID="4" Desc="Perm" />
   </EmpTerms>
   <Categories>
      <Itm DBID="65" Desc="Sales" />
   </Categories>
   <Job_Areas>
      <Itm DBID="11" Desc="S" />
   </Job_Areas>
   <Position_Types>
      <Itm DBID="106" Desc="Sales Consultant" />
   </Position_Types>
   <Currencies>
      <Itm DBID="0" Desc="" />
   </Currencies>
   <Charge_Units>
      <Itm DBID="0" Desc="" />
   </Charge_Units>
   <Job_Atts>
      <Itm DBID="106" Desc="Sales Consultant" MasterID="405" />
      <Itm DBID="162" Desc="Degree" MasterID="411" />
      <Itm DBID="105" Desc="Marketing" MasterID="405" />
   </Job_Atts>
   <Consultants>
      <Itm DBID="13" Desc="USER8 " EMail="test2@account.com" />
   </Consultants>
   <Locations>
      <Itm DBID="204" Desc="Andover,Hampshire" Code="SP10 4AE" GridX="43490" GridY="14670" />
   </Locations>
</JobShopExport>

Open in new window

ee.xml
tryinghard45Asked:
Who is Participating?
 
Ray PaseurConnect With a Mentor Commented:
Please see http://iconoun.com/demo/temp_tryinghard45.php

This kind of access to XML and JSON documents seems to be easiest if you use object-oriented notation.  These data types can be turned into instances of PHP StdClass objects, then you can use iterators to access the properties.

<?php // demo/temp_tryinghard45.php
error_reporting(E_ALL);
echo '<pre>';

// http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_28396599.html

$xml = <<<ENDXML
<?xml version="1.0" encoding="UTF-8"?>
<JobShopExport xmlns="http://tempuri.org/JSExport.xsd">
   <Jobs>
      <Job SysKey="0" DBID="79" RefNo="J142" Con="13" CONSULTANTNAME="USER8 " EMAILADDRESS="test@gp.vu" Sector="47" SECTORNAME="Main Sector" Title="Sales Consultant" Loc="204" LOCATIONDESC="Dudley,West Midlands" Term="4" EMPTYPEDESC="Perm" MinBsc="18000" MaxBsc="20000" MinPkg="0" MaxPkg="0" HoursPW="0" Cat="65" PUBCATDESC="Sales" LOCATIONCODE="SP10 4AE" GRIDREFX="43490" GRIDREFY="14670" SDate="" EDate="" LTDRATE="" PAYERATE="" Currency="0" CURRENCYSYMBOL="" Area="11" AREADESCRIPTION="S" CreatedOn="21/December/2005" UpdatedOn="19/May/2006" PubJobDesc="" PosID="106" POSITIONDESC="Sales Consultant" Company="Test Company Ltd" ChuntID="" ChargeUnitDesc="">
         <Atts>
            <Att AttID="162" Grade="0" />
            <Att AttID="105" Grade="0" />
            <Att AttID="106" Grade="0" />
         </Atts>
      </Job>
   </Jobs>
   <SysKeys>
      <Itm DBID="0" Desc="admin  " />
   </SysKeys>
   <Master_Atts>
      <Itm DBID="405" Desc="Position" />
      <Itm DBID="411" Desc="Qualifications" />
   </Master_Atts>
   <Att_Grades>
      <Itm DBID="0" Desc="" />
   </Att_Grades>
   <Sectors>
      <Itm DBID="47" Desc="Main Sector" />
   </Sectors>
   <EmpTerms>
      <Itm DBID="4" Desc="Perm" />
   </EmpTerms>
   <Categories>
      <Itm DBID="65" Desc="Sales" />
   </Categories>
   <Job_Areas>
      <Itm DBID="11" Desc="S" />
   </Job_Areas>
   <Position_Types>
      <Itm DBID="106" Desc="Sales Consultant" />
   </Position_Types>
   <Currencies>
      <Itm DBID="0" Desc="" />
   </Currencies>
   <Charge_Units>
      <Itm DBID="0" Desc="" />
   </Charge_Units>
   <Job_Atts>
      <Itm DBID="106" Desc="Sales Consultant" MasterID="405" />
      <Itm DBID="162" Desc="Degree" MasterID="411" />
      <Itm DBID="105" Desc="Marketing" MasterID="405" />
   </Job_Atts>
   <Consultants>
      <Itm DBID="13" Desc="USER8 " EMail="test2@account.com" />
   </Consultants>
   <Locations>
      <Itm DBID="204" Desc="Andover,Hampshire" Code="SP10 4AE" GridX="43490" GridY="14670" />
   </Locations>
</JobShopExport>
ENDXML;

// MAKE AN OBJECT
$obj = SimpleXML_Load_String($xml);

// ACTIVATE THIS TO SEE THE OBJECT
// var_dump($obj);

// TEASE OUT SOME DATA
$job = $obj->Jobs->Job;
var_dump($job);

foreach ($job->attributes() as $key => $val)
{
    echo PHP_EOL . "$key <b>$val</b>";
}

// SOME MORE NESTED DATA
foreach ($job->Atts->Att as $att)
{
    print_r($att);
}

Open in new window

HTH, ~Ray
0
 
tryinghard45Author Commented:
Superb Ray - many thanks!!!

(Easy when you know how eh? !!!)

Cheers

Matt
0
 
Ray PaseurCommented:
when you know how
Yep!  Took me a lot of trial and error to know how!

Thanks for the points and thanks for using EE, ~Ray
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.