Я получаю эту ошибку:
error on line 4 at column 1: Extra content at the end of the document
с этим кодом:
$this->load->database(); function parseToXML($htmlStr) { $xmlStr=str_replace('<','<',$htmlStr); $xmlStr=str_replace('>','>',$xmlStr); $xmlStr=str_replace('"','"',$xmlStr); $xmlStr=str_replace("'",''',$xmlStr); $xmlStr=str_replace("&",'&',$xmlStr); return $xmlStr; } $query = $this->db->get('comboTable'); $query = $query->result_array(); header("Content-type: text/xml"); // Start XML file, echo parent node echo '<markers>'; // Iterate through the rows, printing XML nodes for each foreach ($query as $row) { // ADD TO XML DOCUMENT NODE echo '<marker '; echo 'name="' . parseToXML($row['restaurantName']) . '" '; echo 'address="' . parseToXML($row['address']) . '" '; echo 'lat="' . $row['lat'] . '" '; echo 'lng="' . $row['lng'] . '" '; echo '/>'; } // End XML file echo '</markers>';
Не видя сам вывод текста, было бы невозможно точно знать, но я заметил сразу несколько вещей:
header("Content-type: text");
, htmlentities
. &
заменяете все остальное сущностью. Это означает, что вы получаете, &lt;
вместо <
, str_replace
принимает массивы в качестве параметров, вам лучше всего их использовать. Проведя около 3 дней по этой же проблеме, я пришел, чтобы найти лучший и самый простой способ преодолеть это может быть добавлением заголовков следующего к коду:
header("Content-type: text/xml"); header( 'Content-Disposition: attachment; filename='.$_SESSION['WorkTable'].'_contacts-'.$date.'.xml');
Добавьте это в свой код между этими строками:
$query = $query->result_array(); //add it here <-- header("Content-type: text/xml");