PHP: SimpleXML и namespace

Статус
В этой теме нельзя размещать новые ответы.

andead

Создатель
Регистрация
11 Ноя 2007
Сообщения
30
Реакции
11
есть код

PHP:
<?php

$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
    <Table>
        <Row ss:AutoFitHeight="0" ss:StyleID="s16"/>
        <Row ss:AutoFitHeight="0" ss:Height="2.25"/>
    </Table>
</Workbook>
XML;

$xml = new SimpleXMLElement($xmlstr);

echo '<pre>';
print_r($xml->Table);
echo '</pre>';

?>

почему на выходе нет атрибутов у Row? если удалить пространство имён то они появятся :bc:
 
при чем тут пространство имен ?
,структуру xml файла смотрел ?

z например нифига не понял


Row не имеет атрибутов, потому как у тебянет объекта Row, есть Row....

может ты надо
PHP:
$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
    <Table>
        Row ss:AutoFitHeight="0" ss:StyleID="s16"
        Row ss:AutoFitHeight="0" ss:Height="2.25"
    </Table>
</Workbook>
XML;
?,или еще как
логику структуры опиши
 
структуру xml файла смотрел ?
конечно смотрел, это кусок из файла, который получается при экспорте XLS в XML

Row не имеет атрибутов, потому как у тебянет объекта Row, есть Row....
а это что =)?
Код:
...
        <Row ss:AutoFitHeight="0" ss:StyleID="s16"/> 
        <Row ss:AutoFitHeight="0" ss:Height="2.25"/>
...
 
я не понял что тебе нужно сделать, напиши нормально

echo($xml->Table->Row->asXML());
echo($xml->Table->Row[0]->asXML());
echo($xml->Table->Row[1]->asXML());
ну или
echo($xml->Table->asXML());
что там тебе надо ...

пробовал ?
 
мне нужно прочитать атрибуты у всех Row:
AutoFitHeight
StyleID
Height

$xml->Table->asXML пробовал выводить
Код:
<Table>
        <Row ss:AutoFitHeight="0" ss:StyleID="s16"/>
        <Row ss:AutoFitHeight="0" ss:Height="2.25"/>
</Table>
странно было ожидать чего то ещё)))

проблемма в пространстве имён, почему то запись вида ss:атрибут вводит парсер в замешательство, без него всё отлично работает((
 
так бы и сказал что нужны атрибуты

ну удали пространство имен
PHP:
<?php

$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
    <Table>
        <Row ss:AutoFitHeight="0" ss:StyleID="s16"/> 
        <Row ss:AutoFitHeight="0" ss:Height="2.25"/> 
    </Table>
</Workbook>
XML;
$xmlstr=str_replace("ss:","",$xmlstr);
$xml = new SimpleXMLElement($xmlstr);

echo '<pre>';
print_r($xml->Table);
echo '</pre>';

?>
 
так и делал, а если всётаки делать по умному?)

хм. мне всегда почему то казалось что SimpleXML не поддерживает namespace =)
 
2 Dogmat
поддерживать то он поддерживает

SimpleXMLElement-> getDocNamespaces()
SimpleXMLElement-> getNamespaces() и т.д.
читал статьи на эту тему, хз у меня так ничего и не пошло ...

2 andead: по-умному , это когда работает =)
 
посмотрел. действительно есть проблема с namespace у парсера SimpleXML. по стандартному проблема не решается. но вроде есть какие то решения на zend.com по этому поводу.

если найду ссылку, кину.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху