XMLwriter returns 空字符串。谁能看出原因?
XMLwriter returns empty string. Can anyone see a reason?
此函数应创建一个 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;
}
我删除了这段代码:
$writer->openURI('php://output');
并留在这个片段中:
$writer->openMemory();
由于我将 xml 传递给控制器,
openURI()
不是正确的方法,因为它旨在直接输出给用户。
openMemory()
保存数据,然后在函数底部关闭,在包含此文件后使其在我的控制器函数中可用。
此函数应创建一个 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;
}
我删除了这段代码:
$writer->openURI('php://output');
并留在这个片段中:
$writer->openMemory();
由于我将 xml 传递给控制器,
openURI()
不是正确的方法,因为它旨在直接输出给用户。
openMemory()
保存数据,然后在函数底部关闭,在包含此文件后使其在我的控制器函数中可用。