Reputation: 2065
I have seen almost all questions here regarding this issue but none is related.
$employees = simplexml_load_string($response)->c->q[1]['v'];
$employees = SimpleXML Object:
<?xml version="1.0" encoding="utf-8" ?>
<rows xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "Articles_Schema.xsd" >
<row id="1">
<EmployeeID>
<![CDATA[123]]>
</EmployeeID>
<EmplopyeeName>
<![CDATA[John Doe]]>
</EmplopyeeName>
</row>
<row id="2">
<EmployeeID>
<![CDATA[456]]>
</EmployeeID>
<EmplopyeeName>
<![CDATA[Jack Mill]]>
</EmplopyeeName>
</row>
</rows>
I want to retrieve all employees (If found).
I tried to access them using:
$employees->children()
[Empty Array]$employees->rows
[Empty Array]$employees->row
[Empty Array]$employees->xpath('//rows')
[Empty Array]$employees->xpath('//row')
[Empty Array]$employees->registerXPathNamespace('x', 'http://www.w3.org/2001/XMLSchema-instance'); $employees->xpath('//x:row')
[Empty Array]var_dump($employees->getName()); //returns "v"
var_dump($employees->getNamespaces()); //returns NULL
var_dump($employees);
Returns:
object(SimpleXMLElement)#26 (1) {
[0]=>
string(xxx) "
<?xml version="1.0" encoding="utf-8" ?>
<rows xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "Articles_Schema.xsd" >
<row id="1">
<EmployeeID>
<![CDATA[123]]>
</EmployeeID>
<EmplopyeeName>
<![CDATA[John Doe]]>
</EmplopyeeName>
</row>
<row id="2">
<EmployeeID>
<![CDATA[456]]>
</EmployeeID>
<EmplopyeeName>
<![CDATA[Jack Mill]]>
</EmplopyeeName>
</row>
</rows>"
}
Can someone point out what could be causing the problem?
Upvotes: 0
Views: 58
Reputation: 6388
You can approach this as
$xml = <<< EMP
<?xml version="1.0" encoding="utf-8" ?>
<rows xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "Articles_Schema.xsd" >
<row id="1">
<EmployeeID>
<![CDATA[123]]>
</EmployeeID>
<EmplopyeeName>
<![CDATA[John Doe]]>
</EmplopyeeName>
</row>
<row id="2">
<EmployeeID>
<![CDATA[456]]>
</EmployeeID>
<EmplopyeeName>
<![CDATA[Jack Mill]]>
</EmplopyeeName>
</row>
</rows>
EMP;
$xmlToArray = json_decode(json_encode((array)simplexml_load_string($xml,null,LIBXML_NOCDATA)),true);
foreach($xmlToArray['row'] as $row){
echo trim($row['EmployeeID']).'---'.trim($row['EmplopyeeName']);
}
Upvotes: 1
Reputation: 1063
This works for me:
<?php
$employees =<<< EMP
<?xml version="1.0" encoding="utf-8" ?>
<rows xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "Articles_Schema.xsd" >
<row id="1">
<EmployeeID>
<![CDATA[123]]>
</EmployeeID>
<EmplopyeeName>
<![CDATA[John Doe]]>
</EmplopyeeName>
</row>
<row id="2">
<EmployeeID>
<![CDATA[456]]>
</EmployeeID>
<EmplopyeeName>
<![CDATA[Jack Mill]]>
</EmplopyeeName>
</row>
</rows>
EMP;
$employees = simplexml_load_string($employees);
foreach($employees->row as $row)
{
print((string) $row->EmployeeID);
print((string) $row->EmplopyeeName);
}
Something to try for your case:
$employeeXml = simplexml_load_string((string) $employees);
foreach($employeeXml->row as $row)
{
print((string) $row->EmployeeID);
print((string) $row->EmplopyeeName);
}
Upvotes: 1