XMLwriter возвращает пустую строку. Кто-нибудь может увидеть причину?

Эта функция должна создавать XML-файл, который в конечном итоге передается в запрос curl в контроллере, а в конечном итоге и до API учета. Запрос curl прекрасно работает, когда я передаю статический XML-файл.

Код здесь должен генерировать динамический XML-файл на основе создаваемого клиента.

По какой-либо причине он возвращает пустую строку.

Некоторые поля допускают нулевое значение.

Любые идеи очень приветствуются.

$writer = new XMLWriter($xmlString);
// Output directly to the user
$writer->openMemory();

$writer->openURI('php://output');
$writer->startDocument('1.0');
$writer->writeAttribute('encoding', 'utf-8');

$writer->startElement('request');
$writer->writeAttribute('method', 'client.create');

$writer->setIndent(true);

$writer->startElement('client');
//----------------------------------------------------

$writer->writeElement('first_name', $org->first_name);
$writer->writeElement('last_name', $org->last_name);
$writer->writeElement('organization', $org->name);
$writer->writeElement('email', $org->contact_email);
$writer->writeElement('username', $org->contact_name);
$writer->writeElement('password');

//----------------------------------------------------

$writer->startElement('contacts');

$writer->startElement('contact');

$writer->writeElement('username', $org->contact_name);
$writer->writeElement('first_name', $org->first_name);
$writer->writeElement('last_name', $org->last_name);
$writer->writeElement('email', $org->contact_email);
$writer->writeElement('phone1', $org->contact_phone);
$writer->writeElement('phone2');

// contact
$writer->endElement();

// End contacts
$writer->endElement();
//----------------------------------------------------

$writer->writeElement('work_phone', $org->contact_phone);
$writer->writeElement('home_phone', $org->contact_phone);
$writer->writeElement('mobile', $org->contact_phone);
$writer->writeElement('fax', $org->contact_phone);
$writer->writeElement('language', 'en');
$writer->writeElement('currency_code', 'USD');
$writer->writeElement('phone1', $org->contact_phone);
$writer->writeElement('notes');

// primary address
$writer->writeElement('p_street1');
$writer->writeElement('p_city');
$writer->writeElement('p_state');
$writer->writeElement('p_code');

// secondary address
$writer->writeElement('s_street1');
$writer->writeElement('s_city');
$writer->writeElement('s_state');
$writer->writeElement('s_code');

$writer->writeElement('vat_name');
$writer->writeElement('vat_number');// End channel
$writer->endElement();

// End request
$writer->endElement();

$writer->endDocument();

$currentMemory = $writer->outputMemory();

$writer->flush();

return $currentMemory;
}

0

Решение

Я удалил этот фрагмент кода:

$writer->openURI('php://output');

и оставил в этом фрагменте:

$writer->openMemory();

Так как я передавал XML в контроллер,

openURI()

был неправильный метод, так как он предназначен для вывода непосредственно пользователю.

openMemory()

сохраняет данные, а затем закрывается в нижней части функции, делая ее доступной в функции моего контроллера после включения этого файла.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]