[英]XML(in php) parsing on iPhone
我正在开发一个iPhone应用程序,我想将一些数据放入UITableView。 我有一个显示从此处运行的xml解析器的应用程序。
然后,我从该项目中分离了GDataXMLParser并使其运行,但是我有一个奇怪的问题,我无法弄清楚。
这是放置php文件的代码。
- (void)start {
self.startTimeReference = [NSDate timeIntervalSinceReferenceDate];
[[NSURLCache sharedURLCache] removeAllCachedResponses];
self.parsedSongs = [NSMutableArray array];
NSURL *url = [NSURL URLWithString:@"http://mydomain.blabla/phpxmltest.php"];
[NSThread detachNewThreadSelector:@selector(downloadAndParse:) toTarget:self withObject:url];
}
当我直接用echo将php转换为xml时,就像这样,
......
echo "<entry><title>this is the TEST</title><item>TEST</item></entry>";
......
iPhone应用程序确实会像XML一样解析此代码。 但是,当我使用mySQL查询将php转换为xml时(因为我想从数据库中获取xml项),就像这样,
<?php
echo '<?xml version="1.0" encoding="UTF-8"?>';
$result = mysql_connect("localhost", "my ID", "my Password");
mysql_select_db("my DB");
$q = "select name, price, age, likeit, keyword from Table where category=101";
$result = mysql_query($q);
$num_rows = mysql_num_rows($result);
echo "<entry>\n";
for ($i=1; $i<=$num_rows; $i++) {
$row = mysql_fetch_assoc($result);
echo "<item>\n";
echo "<title>" . $row["name"] . "</title>\n";
echo "<category>" . $row["price"] . "</category>\n";
echo "<artist>" . $row["age"] . "</artist>\n";
echo "<album>" . $row["likeit"] . "</album>\n";
echo "<releasedate>" . $row["keyword"] . "</releasedate>\n";
echo "</item>\n";
}
echo "</entry>";
?>
iPhone应用程序不会解析此代码。 它告诉我XML中没有项目。 对我来说最奇怪的是,Web浏览器上的结果完全相同。 当我将URL放在浏览器中时,输出本身和源(具有浏览器的查看源功能)完全相同。 这是Web浏览器中的源代码视图(请不要介意一些编码问题)
<?xml version="1.0" encoding="UTF-8"?>
<entry>
<item>
<title>������ ���ĺ� ������</title>
<category>11000</category>
<artist>3</artist>
<album>0</album>
<releasedate>���ĺ� ���߱�</releasedate>
</item>
<item>
<title>���ĺ� ��������</title>
<category>18000</category>
<artist>3</artist>
<album>0</album>
<releasedate>���ĺ� ����</releasedate>
</item>
…..
我已经尽力使它工作,但是对我来说太难了。 我是iOS和Web编程的入门者。 请让我知道问题和解决方案。 预先谢谢你!:D
(请不要介意一些编码问题)也许我们不介意,但是xml解析器可能会。
并且您还应该将错误消息打印为稍微有效的xml文档,因为您告诉客户端它将接收xml。
例如(仅由php -l
测试):
<?php if ( headers_sent() ) { die("can't set mimetype and/or charset after output has been sent to the client"); } ini_set('default_charset', 'utf-8'); ini_set('default_mimetype', 'text/xml'); // ini_set('default_mimetype', 'application/xml'); echo '<?xml version="1.0" encoding="UTF-8"?>'; $mysql = mysql_connect("localhost", "my ID", "my Password"); if ( !$mysql ) { die('<error>database connection failed</error>'); } if ( !mysql_select_db("my DB", $mysql) ) { die('<error>database selection failed</error>'); } if ( !mysql_set_charset('utf8', $mysql) ) { die('<error>setting database selectiocharset failed</error>'); } $q = 'SELECT name, price, age, likeit, keyword FROM Table WHERE category=101'; $result = mysql_query($q, $mysql); if ( !$result ) { die('<error>database query failed</error>'); } echo "<entry>\\n"; while( false!=($row=mysql_fetch_assoc($result)) ) { echo ' <item> <title>', htmlspecialchars($row["name"], 'utf-8'), '</title> <category>', htmlspecialchars($row["price"], 'utf-8'), '</category> <artist>', htmlspecialchars($row["age"], 'utf-8'), '</artist> <album>', htmlspecialchars($row["likeit"], 'utf-8'), '"</album> <releasedate>', htmlspecialchars($row["keyword"], 'utf-8'), '</releasedate> </item>'; } echo "</entry>"; ?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.