Witam,
Ma ktoś pomysł na odczytanie danych znajdujących się za tagiem CDATA z wykorzystaniem SimpleXML ?
Oto przykładowy xml (kwałek):
<?xml version='1.0' encoding='UTF-8'?>
<Message msgID="99999999999999" timeStamp="2012-04-06T12:12:23" version="01.00" >
<Sender id="0" system="xxx" version="xxx">
<App name="Xxx" version="" />
</Sender>
<Recipient id="xxx" system="xxx" />
<Packet>
<PacketInfo>
<action>xx</action>
<manifest>
<Type>xx</Type>
<Version>xxx</Version>
</manifest>
<Status>
<code></code>
<longDescription>xxx</longDescription>
</Status>
<Command>
<Code></Code>
</Command>
</PacketInfo>
<payload crc="xxx"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<PositionOpening>
<PositionRecordInfo validFrom="2012-06-04">
<IdXSDPL versionPL="xxx"/>
<IdValueXMLPL>xxx</IdValueXMLPL>
</PositionRecordInfo>
<PositionSupplier>
<SupplierId>
<IdValue>Xxx</IdValue>
</SupplierId>
</PositionSupplier>
<PositionProfile>
<ProfileId validFrom="2012-06-04" validTo="2012-07-03">
<PositionIdUPPL>Xxx</PositionIdUPPL>
<PositionNumberPL>xxx</PositionNumberPL>
</ProfileId>
<ProfileName>xxx</ProfileName>
<Organization>
<OrganizationName>xxx</OrganizationName>
<OrganizationId>
<IdValue>Xxx</IdValue>
</OrganizationId>
<IndustryCode>xxx</IndustryCode>
<IndustryCodeX>x</IndustryCodeX>
<ContactInfo>
[...]
</PositionOpening>]]></payload>
</Packet>
</Message>
Udało mi się rozwiązać problem. Nie jest może to sposób optymalny ale działa

Mianowicie postanowiłem usunąć znaczniki CDATA z pliku XML.
$content = preg_replace('/\<\?xml version="1.0" encoding="UTF-8"\?\>/', '', $content);
$xml = simplexml_load_string($content);
foreach($xml->Packet->payload->PositionOpening->PositionProfile as $pos) {
// odwołanie do poszczególnych gałęzi
}
Ten post edytował h3xed 20.06.2012, 13:08:22