Я настраиваю веб-API, который, я уверен, можно сделать более эффективно, но это v0.1. Прежде всего, выезд localhost/serverList/api/rest.php?action=allServers&format=xml
. Это начинает следующую цепочку. Я удалил НЕРАСПРОСТРАНЕНИИ соответствующие части кода, так что этот вопрос корочеФункция должна возвращать действительный xml. Вместо этого возвращает ошибку «Дополнительный контент»
SERVERLIST/апи/rest.php
<?php
include 'inc/restFunctions.php';
//several lines of code removed. $functionName = allserversxml
if(in_array($action,$possibleActions)){
if(in_array($format,$possibleFormats)){
$functionName = $action.$format;
$result = $functionName();
header('Content-type: text/xml');
$return->flush();
}
}
?>
SERVERLIST/апи/вкл/restFunctions.php
<?php
function getArrayOfFieldNames($queryResults){
$fieldList = array();
while($finfo = $queryResults->fetch_field()){
$fieldName = $finfo->name;
array_push($fieldList, $fieldName);
}
return $fieldList;
}
function getXMLofQuery($queryResults,$xmlTitle){
$fieldList = getArrayOfFieldNames($queryResults);
$xml = new XMLWriter();
$xml->openURI("php://output");
$xml->startDocument();
$xml->setIndent(true);
$title = $xmlTitle;
$titlePlural = $xmlTitle."s";
$xml->startElement($titlePlural);
$fieldIDName = $title."ID";
while($row = $queryResults->fetch_assoc()){
$xml->startElement($title);
$xml->writeAttribute('id', $row[$fieldIDName]);
foreach($fieldList as $field){
$xml->startElement($field);
$xml->writeRaw($row[$field]);
$xml->endElement();
}
$xml->endElement();
}
$xml->endElement();
return $xml;
}
function allserversxml(){
global $link; //from config.php file
$allServerResults = $link->query("SELECT * FROM servers");
$xml = getXMLofQuery($allServerResults,"server");
return $xml;
}
?>
Проблема в том, что когда я перехожу к URL-адресу, я получаю сообщение об ошибке error on line 2 at column 1: Extra content at the end of the document. Below is a rendering of the page up to the first error.
Однако ... ниже нет рендеринга. Что дает?
EDIT: согласно рекомендации ndm, я смог получить сообщение об ошибке через источник страницы.
Call to a member function flush() on a non-object in C:\path\serverList\api\rest.php on line 29
Так что я полагаю, мой вопрос будет то, что это лучший способ для отображения XML на странице, когда он возвращается из функции?
Посмотрите на источник страницы, это должно показать вам фактическое содержимое XML. – ndm
oh whoa, здесь есть все виды данных, которые не отображаются! Редактирование моего вопроса, чтобы отразить как таковой – mhopkins321