Witam,
parsuję plik XML w PHP za pomocą XMLReader i ładnie wszystko wyciągam poza jednym tagiem.
Przykładowo mam plik:
<?xml version="1.0" encoding="utf-8"?>
<offers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1">
<group name="books">
<o id="286" url="http://kodeks-net.pl/p/1521/286/ustawa-o-podatkach-i-oplatach-lokalnych-komentarz-z-suplementem-elektronicznym--prawo.html"
price="201.60" avail="1" weight="0" stock="10" set="0">
<cat><![CDATA[PRAWO]]></cat>
<name><![CDATA[Ustawa o podatkach i opłatach lokalnych Komentarz (z suplementem elektronicznym)]]></name>
<imgs><main url="http://kodeks-net.pl/templates/images/thumb/10019/496b435553343.jpg"/></imgs>
<desc><![CDATA[Bardzo praktyczny i niezwykle szczegółowy kome....]]></desc>
<attrs>
<a name="Autor"><![CDATA[ Morawski Wojciech]]></a>
<a name="ISBN"><![CDATA[9788378041214]]></a>
<a name="Ilosc_stron"><![CDATA[]]></a>
<a name="Wydawnictwo"><![CDATA[ODDK - Ośrodek Doradztwa i Doskonalenia Kadr]]></a>
<a name="Rok_wydania"><![CDATA[2013]]></a>
<a name="Oprawa"><![CDATA[Miękka]]></a>
<a name="Format"><![CDATA[B5]]></a>
</attrs>
</o>
</group>
</offers>
Parsuję go w ten sposób:
<HTML>
<HEAD>
<TITLE> XMLReader </TITLE>
</HEAD>
<BODY>
<?
$file_in="testowy2.xml";
$file_out="data.csv";
$sep="|";
$eol="\n";
$fp = fopen($file_out, "w"); // w - kasuje poprzednia zawartosc
$reader = new XMLReader();
if (!$reader->open($file_in))
{
die("Failed to open file ".$file_in); }
while($reader->read()) {
if($reader->nodeType == XMLReader::ELEMENT) {
$name = $reader->name;
}
if ( $reader->nodeType ==XMLReader::ELEMENT && $reader->name == "o" ) {
fwrite($fp,$reader->getAttribute('id').$sep); fwrite($fp,$reader->getAttribute('price').$sep); fwrite($fp,$reader->getAttribute('avail').$sep); fwrite($fp,$reader->getAttribute('weight').$sep); fwrite($fp,$reader->getAttribute('stock').$sep); fwrite($fp,$reader->getAttribute('set').$sep); }
if ( $reader->nodeType ==XMLReader::ELEMENT && $reader->name == "imgs" ) {
fwrite($fp,$reader->readString.$sep); }
if($reader->nodeType == XMLReader::TEXT ||
$reader->nodeType == XMLReader::CDATA)
{
fwrite($fp,$reader->value.$sep); }
if($reader->nodeType == XMLReader::END_ELEMENT &&
$reader->name == 'o')
{
}
}
$reader->close();
?>
</BODY>
</HTML>
Niestety nie wiem jak wyciągnąć URL z (tag w tagu):
<imgs><main url="http://kodeks-net.pl/templates/images/thumb/10019/496b435553343.jpg"/></imgs>
Proszę o pomoc.