我想在php(正确编码)中创建一个工作的xml文件,以将数据从在线数据库导出到iphone

时间:2011-12-21 12:42:36

标签: php iphone xml encoding nsxmlparser

我想在php(正确编码)中创建一个有效的xml文件,将数据从在线数据库导出到iphone

请告诉我它的编码...因为我是php新手...不太了解:(

请帮助我:(

我现在使用的代码如下:

<?php

    // Èdition du dÈbut du fichier XML
    $xml .= '<?xml version=\"1.0\" encoding=\"UTF-8\"?>';
    $sml .= '<channel>'; 
    $xml .= '<title>Infonul</title>';
    $xml .= '<link>aaa</link>';
    $xml .= '<description>aaa</description>';


    // connexion a la base (mettre ‡ jour le mdp)
    $connect = mysql_connect('...-12','...','...');

    /* selection de la base de donnÈe mysql */
    mysql_select_db('...');

    // selection des 20 derniËres news
    $res=mysql_query("SELECT u.display_name as author,p.post_date as date,p.comment_count as commentCount, p.post_content as content,p.post_title as title FROM wp_posts p, wp_users u WHERE p.post_status = 'publish' and p.post_type = 'post' and p.post_author = u.id ORDER BY p.id DESC LIMIT 0,20");


    // extraction des informations et ajout au contenu
    while($tab=mysql_fetch_array($res)){   

     $title=$tab[title];
     $author=$tab[author];
     $content=$tab[content]; //html stuff
     $commentCount=$tab[commentCount];
     $date=$tab[date];

     $xml .= '<item>';
     $xml .= '<title>'.$title.'</title>';
     $xml .= '<content><![CDATA['.$content.']]></content>';
     $xml .= '<date>'.$date.'</date>';
     $xml .= '<author>'.$author.'</author>';
     $xml .= '<commentCount>'.$commentCount.'</commentCount>';
     $xml .= '</item>'; 
    }

    // Èdition de la fin du fichier XML
    $xml .= '</channel>';
    $xml = utf8_encode($xml);

    echo $xml;

    // Ècriture dans le fichier
    if ($fp = fopen("20news.xml",'w'))
    {
     fputs($fp,$xml);
     fclose($fp);
    }

    //mysql_close();

&GT;

但是这段代码有一些错误

1 个答案:

答案 0 :(得分:0)

向iPhone提供XML内容的最佳方式可能就是使用plist。

plist文件(filename.plist)实际上只是一种XML格式,但是以一种特殊的方式。它看起来像这样:

<plist version="1.0">
        <array>
            <dict>
                <key>title</key>
                <string>Angry Cat</string>
                <key>fileName</key>
                <string>cat_angry1.caf</string>
                <key>fileArray</key>
                <array>
                    <dict>
                        <key>fileName</key>
                        <string>cat_angry1.caf</string>
                    </dict>
                </array>
                <key>icon</key>
                <string>icon1.png</string>
                <key>buttonIndex</key>
                <integer>0</integer>
            </dict>
        </array>
    </plist>

所以你需要做的就是在php中输出正确的标题:

header("Content-type: text/xml"); 
echo "<?xml version=\"1.0\"?>";

并将数据库输出为与上述格式类似的格式。

从那里你可以使用NSURLConnection下载plist并使用类似教程的内容:http://iphoneincubator.com/blog/data-management/reading-and-writing-plists来阅读plist格式。 :)

发布代码后更新

您的代码存在一些问题。首先,在第5行,$sml .= '<channel>';它应该是$xml...。数组应始终放在引号中。这是错误的:$tab[commentCount]它应该是$tab["commentCount"]只是因为有任何常量命名相同。

在顶部,您有$xml .= '...。虽然这可能有用,但我以前从未遇到过它。只需在所有代码行之前尝试顶部$xml = ''。然后在尝试向其追加字符串之前初始化变量。

希望其中一些有效。如果没有这些问题那么请你发布文件的OUTPUT。或者你得到的任何php错误/ mysql错误,它可能与此有关。