public function format(Request $request)
{
$contentType = $this->contentType;
$charset = $this->encoding === null ? Yii::$app->charset : $this->encoding;
if (stripos($contentType, 'charset') === false) {
$contentType .= '; charset=' . $charset;
}
$request->getHeaders()->set('Content-Type', $contentType);
$data = $request->getData();
if ($data !== null) {
if ($data instanceof DOMDocument) {
$content = $data->saveXML();
} elseif ($data instanceof SimpleXMLElement) {
$content = $data->saveXML();
} else {
$dom = new DOMDocument($this->version, $charset);
$root = new DOMElement($this->rootTag);
$dom->appendChild($root);
$this->buildXml($root, $data);
$content = $dom->saveXML();
}
$request->setContent($content);
}
return $request;
}