2017-11-16 1 views
0

이 질문에 대한 답변을 찾았지만 응용 프로그램에 맞는 대답을 찾을 수 없습니다.<! [CDATA in xml 응답

xml 형식의 sql 쿼리에서 응답해야하지만 응답은 url이므로 cdata를 사용해야합니다. 여기 내 코드가있다.

if ($_POST['action']=="getSermon") 
{ 
    //echo"You got it"; 
    $SQL = "SELECT * FROM sermons"; 

    $allsermon = mysql_query($SQL); 
    $sermonrow = mysql_fetch_assoc($allsermon); 

    header('Content-type: text/xml; charset=utf-8'); 
    header('Pragma: public');   
    header('Cache-control: private'); 
    header('Expires: -1'); 
    $xml = '<?xml version="1.0" encoding="utf-8"?>'; 
    echo $xml; 
    echo "<SERMON_INFO>"; 
    do { 
     echo "<SERMON>";  
     echo "<ID>" . $sermonrow['id'] . "</ID>"; 
     echo "<NAME>" . $sermonrow['Name'] . "</NAME>"; 
     echo "<URL>".<![CDATA[$sermonrow['url']]>."</NAME>"; 
     //echo "<URL>". $sermonrow['url'] . "</URL>"; 
     echo "</SERMON>"; 
     mysql_free_result($result); 
    } while ($sermonrow = mysql_fetch_assoc($allsermon)); 
    mysql_free_result($allsermon); 
    echo "</SERMON_INFO>"; 
    mysql_close($db); 

    } 

이렇게하면 오류 500이 발생하고 페이지가로드되지 않습니다.

+0

불필요한 중복 mysql_fetch_assoc() 호출을 제거하기 위해'do-> while'을 보통 while 루프로 변경해야합니다 – Scuzzy

답변

1

올바른 구문은

echo "<URL><![CDATA[".$sermonrow['url']."]]></URL>"; 

입니다하지만 당신은 당신의 문서가 더 복잡한 구축 DOMDocument 또는 SimpleXML 같은 XML 라이브러리를 사용하지 않고 싶지만, 당신은 최대 혼합 같은 간단한 오류가 적은 경향이 있습니다 닫는 태그 이름 (</NAME> 참조).