XMLwriter返回空字符串。任何人都可以看到原因吗?

时间:2016-11-15 17:51:44

标签: php laravel xmlwriter

这个函数应该创建一个xml文件,最终传递给控制器​​中的curl请求,最终达到一个会计api。传入静态XML文件时,curl请求正常工作。

此处的代码应基于正在创建的客户端生成动态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;
}

1 个答案:

答案 0 :(得分:0)

我删除了这段代码:

$writer->openMemory();

并留在此代码段中:

openURI()

因为我将xml传递给控制器​​,

openMemory()

不是正确的方法,因为它旨在直接输出给用户。

scanf("%[^\n]%*c",string);

保存数据,然后在函数底部关闭,在我包含此文件后使其在我的控制器函数中可用。