我应该以xml格式输出

时间:2012-12-29 10:11:46

标签: php mysql xml

<?php

$sql    = "SELECT xxxx FROM xxxx";
$result = mysql_query($sql, $con);
if ($result) {
    while ($row = mysql_fetch_array($result)) {
        $jobtitle = $row["xxxx"];
        echo $jobtitle . "<br/>"; //output should be in xml format as given below
    }

}

在上面的示例代码中,我使用echo将作业标题打印为简单文本。

但我想要XML格式的输出;那就是我应该得到类似于:

的输出
<all>
   <jobtitle>job1</jobtitle>
   <jobtitle>job2</jobtitle>
</all>

我可以得到输出:

job1
job2

4 个答案:

答案 0 :(得分:0)

它不会自动插入您想要的xml标签,您需要在作业前后回显它们,以下就是这样:

    echo header('Content-Type: application/xml');
    $sql = "select jobtitle from jobslist";
    $result = mysql_query($sql,$con);
     if($result)
     {
       echo "<all>\n";
       while($row=mysql_fetch_array($result))
       {
         $jobtitle = $row["jobtitle"];
     echo "<jobtitle>$jobtitle</jobtitle>\n"; //output should be in xml format as given below
       }
       echo "</all>\n";
     }

具体来说,回显$ jobtitle的行,只需要修改(以及开始/结束&lt; all&gt;和&lt; / all&gt;

echo "<jobtitle>$jobtitle</jobtitle>\n";

答案 1 :(得分:0)

您必须添加xml标记以包装数据库结果,并为xml发送正确的标头。我还添加了以便在解析输出时不必担心xml错误

    if($result){
        header ("Content-Type:text/xml"); 
        $xmlstring='<?xml version="1.0"?>\n';
        $xmlstring='<all>\n';
        while($row=mysql_fetch_array($result)){
              $xmlstring.='<jobtitle><![CDATA['. $row["jobtitle"].']]></jobtitle>\n';

          }
       $xmlstring.='</all>';

       echo  $xmlstring;
       }

答案 2 :(得分:0)

问题似乎是一个简单的事实,即您没有将XML标记附加到输出中。使其按预期工作的简单方法如下:

<?php header('Content-Type: application/xml'); ?>
<?php
    $sql = "select jobtitle from jobslist";
    $result = mysql_query($sql,$con);
    if($result) {
        echo '<?xml version="1.0"?>', "\n";
        echo '<all>', "\n";
        while( $row = mysql_fetch_array($result) ) {
            echo '    <jobtitle>' , $row["jobtitle"] , '</jobtitle>' , "\n";
        }
        echo '</all>', "\n";
    }
?>

此外,here's a test I conducted on Codepad.org显示了更改的内容。

答案 3 :(得分:0)

对于非常简单的XML输出,您可以在SimpleXMLElementDocs

的帮助下轻松完成
$all = new SimpleXMLElement('<all />');

$sql    = "SELECT xxxx FROM xxxx";
$result = mysql_query($sql, $con);
while ($result && $row = mysql_fetch_array($result)) {
    $all->addChild('jobtitle', $row["xxxx"]);
}

echo $all->asXML();

示例输出(美化):

<?xml version="1.0"?>
<all>
    <jobtitle>job1</jobtitle>
    <jobtitle>job2</jobtitle>
</all>

我还建议您查看PHP手册,其中包含更多资源,以提供如何创建,操作和输出XML:Basic SimpleXML usage