2012-12-02 127 views
0

我已经检查了很多示例代码,但仍在努力使矿山正常工作。我正尝试从我的PHP脚本生成XML输出。从PHP生成XML输出

的login.php

<?php 

    mysql_connect("localhost", "root", "") or die("cannot connect"); 
    mysql_select_db("ConquestOfLancaster") or die("cannot select DB"); 

    $username = $_REQUEST['username']; 
    $password = sha1($_REQUEST['password']); 

    $username = mysql_real_escape_string($username); 

    $domDoc = new DOMDocument; 
    $rootElt = $domDoc->createElement('root'); 
    $rootNode = $domDoc->appendChild($rootElt); 

    $sql = "SELECT user_id, user_name FROM tbl_user WHERE user_name='$username' and user_pass='$password'"; 
    $result = mysql_query($sql); 

    $count=mysql_num_rows($result); 

    if($count > 0){ 

     //echo("welcome"); 
     $rootAtr = $domDoc->createAttribute('success'); 
     $rootAtrVal = $domDoc->createTextNode('TRUE'); 
     $rootAtr->AppendChild($rootAtrVal); 
     $rootElt->AppendChild($rootAtr); 

     $subElt = $domDoc->createElement('username'); 
     $subNode = $rootNode->appendChild($subElt); 

     $textNode = $domDoc->createTextNode($username); 
     $subNode->appendChild($textNode); 

     echo htmlentities($domDoc->saveXML()); 
    } else{ 

     //echo("not exist"); 
     $rootAtr = $domDoc->createAttribute('success'); 
     $rootAtrVal = $domDoc->createTextNode('FALSE'); 
     $rootAtr->AppendChild($rootAtrVal); 
     $rootElt->AppendChild($rootAtr); 

     echo htmlentities($domDoc->saveXML()); 
    } 

?> 

和浏览器的输出是

<?xml version="1.0"?> <root success="TRUE"><username>user1</username></root> 

我的主要问题是,与此PHP交互我的iOS应用程序无法解析这个结果。我做错了什么?

+0

,这是非常错误的第一件事就是用depricated mysql_ *命令集。使用PDO或mysqli –

+0

这会改变XML生成的方式吗?我的意思是从我这边来看是一个重要的错误? – OutOfBoundsException

+0

不会更改xml,但在新代码中使用过时的不受支持的技术是个不错的主意。 http://ca1.php.net/manual/en/function.mysql-connect.php –

回答

1

您是否尝试取出htmlentities

当你发送的是:

&lt;xml version ... 

<?xml version="1.0"?> <root success="TRUE"><username>user1</username></root> 

像你想象的

+0

有一种方法可以将它打印为真正的XML输出?我已经删除了htmlentities,现在屏幕上什么也没有。我是PHP编程新手,仍在挣扎。对不起,傻傻的问题.. – OutOfBoundsException

+0

你应该得到user1在屏幕上,如果你没有发送正确的标题它是正确的输出,你总是可以尝试查看页面源。并且要确保在if语句的两个地方用'echo $ domDoc-> saveXML();'替换'echo htmlentities($ domDoc-> saveXML());''。 –

+0

呜呼!!!我改变了你的建议并添加了标题('Content-Type:application/xml');现在,看起来像XML输出:)然而,在顶部说:“这个XML文件似乎没有任何与它相关的样式信息,文档树如下所示。”需要担心? – OutOfBoundsException