@WebforSelf

Почему не правильно закрывается тег в xml?

Такая проблема в PHP генерится структура XML
Данный код по доставке работает без проблем и выглядит

if($order->delivery_price>0 && !$order->separate_delivery)
			{
				$t1 = $t1->addChild ( 'Товар' );
				$t1->addChild ( "Ид", 'ORDER_DELIVERY');
				$t1->addChild ( "Наименование", 'Доставка');
				$t1->addChild ( "ЦенаЗаЕдиницу", $order->delivery_price);
				$t1->addChild ( "Количество", 1 );
				$t1->addChild ( "Сумма", $order->delivery_price);
				$t1_2 = $t1->addChild ( "ЗначенияРеквизитов" );
				$t1_3 = $t1_2->addChild ( "ЗначениеРеквизита" );
				$t1_4 = $t1_3->addChild ( "Наименование", "ВидНоменклатуры" );
				$t1_4 = $t1_3->addChild ( "Значение", "Услуга" );

				$t1_2 = $t1->addChild ( "ЗначенияРеквизитов" );
				$t1_3 = $t1_2->addChild ( "ЗначениеРеквизита" );
				$t1_4 = $t1_3->addChild ( "Наименование", "ТипНоменклатуры" );
				$t1_4 = $t1_3->addChild ( "Значение", "Услуга" );
				
			}


А в XMl

spoiler

<Товар>
                <Ид>ORDER_DELIVERY</Ид>
                <Наименование>Доставка</Наименование>
                <ЦенаЗаЕдиницу>215.00</ЦенаЗаЕдиницу>
                <Количество>1</Количество>
                <Сумма>215.00</Сумма>
                <ЗначенияРеквизитов>
                    <ЗначениеРеквизита>
                        <Наименование>ВидНоменклатуры</Наименование>
                        <Значение>Услуга</Значение>
                    </ЗначениеРеквизита>
                </ЗначенияРеквизитов>
                <ЗначенияРеквизитов>
                    <ЗначениеРеквизита>
                        <Наименование>ТипНоменклатуры</Наименование>
                        <Значение>Услуга</Значение>
                    </ЗначениеРеквизита>
                </ЗначенияРеквизитов>
            </Товар>



Нужно добавить точную копию только с другим названием, для этого делаю так

spoiler

// Доставка
			if($order->delivery_price>0 && !$order->separate_delivery)
			{
				$t1 = $t1->addChild ( 'Товар' );
				$t1->addChild ( "Ид", 'ORDER_DELIVERY');
				$t1->addChild ( "Наименование", 'Доставка');
				$t1->addChild ( "ЦенаЗаЕдиницу", $order->delivery_price);
				$t1->addChild ( "Количество", 1 );
				$t1->addChild ( "Сумма", $order->delivery_price);
				$t1_2 = $t1->addChild ( "ЗначенияРеквизитов" );
				$t1_3 = $t1_2->addChild ( "ЗначениеРеквизита" );
				$t1_4 = $t1_3->addChild ( "Наименование", "ВидНоменклатуры" );
				$t1_4 = $t1_3->addChild ( "Значение", "Услуга" );

				$t1_2 = $t1->addChild ( "ЗначенияРеквизитов" );
				$t1_3 = $t1_2->addChild ( "ЗначениеРеквизита" );
				$t1_4 = $t1_3->addChild ( "Наименование", "ТипНоменклатуры" );
				$t1_4 = $t1_3->addChild ( "Значение", "Услуга" );
				
			}
			
						// Оплата за наложенный платеж
			if($order->payment_price>0)
			{ 
				$t1 = $t1->addChild ( 'Товар' );
				$t1->addChild ( "Ид", 'DOP_PAYMENT');
				$t1->addChild ( "Наименование", 'Наложенный');
				$t1->addChild ( "ЦенаЗаЕдиницу", $order->payment_price);
				$t1->addChild ( "Количество", 1 );
				$t1->addChild ( "Сумма", $order->payment_price);
				$t1_2 = $t1->addChild ( "ЗначенияРеквизитов" );
				$t1_3 = $t1_2->addChild ( "ЗначениеРеквизита" );
				$t1_4 = $t1_3->addChild ( "Наименование", "ВидНоменклатуры" );
				$t1_4 = $t1_3->addChild ( "Значение", "Услуга" );

				$t1_2 = $t1->addChild ( "ЗначенияРеквизитов" );
				$t1_3 = $t1_2->addChild ( "ЗначениеРеквизита" );
				$t1_4 = $t1_3->addChild ( "Наименование", "ТипНоменклатуры" );
				$t1_4 = $t1_3->addChild ( "Значение", "Услуга" );	
			}



и в XML получается ошибка - тег Товар первого блока , полностью оборачивает оба блока, а должны просто идти друг за другом.

spoiler

<Товар>
                <Ид>ORDER_DELIVERY</Ид>
                <Наименование>Доставка</Наименование>
                <ЦенаЗаЕдиницу>215.00</ЦенаЗаЕдиницу>
                <Количество>1</Количество>
                <Сумма>215.00</Сумма>
                <ЗначенияРеквизитов>
                    <ЗначениеРеквизита>
                        <Наименование>ВидНоменклатуры</Наименование>
                        <Значение>Услуга</Значение>
                    </ЗначениеРеквизита>
                </ЗначенияРеквизитов>
                <ЗначенияРеквизитов>
                    <ЗначениеРеквизита>
                        <Наименование>ТипНоменклатуры</Наименование>
                        <Значение>Услуга</Значение>
                    </ЗначениеРеквизита>
                </ЗначенияРеквизитов>
                <Товар>
                    <Ид>ORDER_DELIVERY</Ид>
                    <Наименование>Доставка</Наименование>
                    <ЦенаЗаЕдиницу>215.00</ЦенаЗаЕдиницу>
                    <Количество>1</Количество>
                    <Сумма>215.00</Сумма>
                    <ЗначенияРеквизитов>
                        <ЗначениеРеквизита>
                            <Наименование>ВидНоменклатуры</Наименование>
                            <Значение>Услуга</Значение>
                        </ЗначениеРеквизита>
                    </ЗначенияРеквизитов>
                    <ЗначенияРеквизитов>
                        <ЗначениеРеквизита>
                            <Наименование>ТипНоменклатуры</Наименование>
                            <Значение>Услуга</Значение>
                        </ЗначениеРеквизита>
                    </ЗначенияРеквизитов>
                </Товар>
            </Товар>



Что не так то? Вроде все закрыто без ошибок
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 1
scottparker
@scottparker
$t1 = $t1->addChild ( 'Товар' );
вот в этом (этих) переприсваиваниях переменной t1
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы