Парсинг xml c пространствами имён, вложенные на несколько уровней.

SoundWave

Новичок
Есть Xml

Код:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ns:Documents xmlns:c="http://fsrar.ru/WEGAIS/Common"
 xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01"
 xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef_v2"
 xmlns:pref="http://fsrar.ru/WEGAIS/ProductRef_v2"
 xmlns:wb="http://fsrar.ru/WEGAIS/TTNSingle_v2"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.0">
    <ns:Owner>
        <ns:FSRAR_ID>030000010881</ns:FSRAR_ID>
    </ns:Owner>
    <ns:Document>
        <ns:WayBill_v2>
            <wb:Identity>15e542c5-d99d-4603-9b9e-e3439250ed3f</wb:Identity>
            <wb:Header>
                <wb:Type>WBInvoiceFromMe</wb:Type>
                <wb:NUMBER>НД00013464</wb:NUMBER>
                <wb:Date>2017-07-13</wb:Date>
                <wb:ShippingDate>2017-07-14</wb:ShippingDate>
                <wb:Transport>
                    <wb:TRAN_COMPANY>ООО "НАША ДОСТАВКА"</wb:TRAN_COMPANY>
                    <wb:TRAN_CUSTOMER>ИП </wb:TRAN_CUSTOMER>
                    <wb:TRAN_LOADPOINT>Россия, 397167,</wb:TRAN_LOADPOINT>
                    <wb:TRAN_UNLOADPOINT>г. Новохоперск</wb:TRAN_UNLOADPOINT>
                </wb:Transport>
                <wb:Shipper>
                    <oref:UL>
                        <oref:INN>3604018623</oref:INN>
                        <oref:KPP>360401001</oref:KPP>
                        <oref:ClientRegId>030000010881</oref:ClientRegId>
                        <oref:FullName>ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "НАША ДОСТАВКА"</oref:FullName>
                        <oref:ShortName>ООО "НАША ДОСТАВКА"</oref:ShortName>
                        <oref:address>
                            <oref:Country>643</oref:Country>
                            <oref:RegionCode>36</oref:RegionCode>
                            <oref:description>Россия</oref:description>
                        </oref:address>
                    </oref:UL>
                </wb:Shipper>
            </wb:Header> 
        </ns:WayBill_v2> 
    </ns:Document> 
</ns:Documents>
PHP:
$sxe = simplexml_load_file("tmp/WayBill_v2.xml");
$ns = $sxe->getNamespaces(true);
$child = $sxe->children($ns['ns']);
foreach ($child->Owner->FSRAR_ID as $out_ns);
{
echo $out_ns;
}
Получаю только содержимое тегов пространства ns.
Как получить содержимое тегов из других пространств вложенных в ns ?
Над гуглом как только уже не издевался, молчит.
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
метод $sxe->children($ns['ns']); в зависимости от вложений, рекурсивный, не думал?
 

SoundWave

Новичок
PHP:
$xml = simplexml_load_file("tmp/WayBill_v2.xml");
$ns = $xml->getNamespaces(true);
$xml = $xml->children($ns['ns']);

$child = $xml->Document->WayBill_v2->children($ns['wb']);
foreach ($child->Identity as $out_ns);
{
echo $out_ns;
}
так вроде заработало
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
сразу и пиши
PHP:
echo $xml->Document->WayBill_v2->Identity;
 
Сверху