POSTを使用してWebフォームから作成されたXMLを解析するのに苦労しています。
シナリオは次のとおりです。
1)ユーザーがWebページにアクセスし、テキストフィールドに名前を入力して、[送信]をクリックします。
2)これはPHPファイル(「makeXML.php」と呼ばれる)を呼び出し、「currentUserName」と呼ばれるタグにそのユーザーの名前を含むXMLファイルを生成します。
3)次に、iPhoneアプリはこの「makeXML.php」ファイルを(「loadXMLByURL」を使用して)ロードして解析し、特に「currentUserName」タグの内容をUILabelオブジェクトに出力するようにします。
非常に単純なはずですが、何らかの理由で、「currentUserName」タグの内容はアプリで空になりますが、ブラウザーで生成されたXMLコードでは完全に表示されます。
さらに奇妙なことに、フォームから値を取得するのではなく、PHPファイル( "makeXML.php")の "uName"に値をハードコーディングすると($ _POST ["userName"];) -それはすべて完全にうまく機能します。「currentUserName」タグから値を取得して、UILabelオブジェクトに出力することができます。
NSXMLParserは、何らかの理由でPOSTされた値を好まないようです。
何か案は?
コードは次のとおりです。
portal.html:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Web-Form</title>
</head>
<body>
<form name="form1" method="post" action="makeXML.php">
<p>Enter your name:</p>
<p>
<input name="userName" type="text" />
</p>
<p>
<input type="submit" value="SUBMIT" />
</p>
</form>
</body>
</html>
これが「makeXML.php」です。
<?php
header("Content-type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
echo "<document>";
$uName = $_POST["userName"];
echo "Here is the name you typed:";
echo "<br/>";
echo "<theUsersName>$uName</theUsersName>";
echo "</document>";
?>
makeXML.phpから出力されたコードは次のとおりです(このコードはすべて1行で出力されることに注意してください-それはどのように想定されているのですか?「br」タグが機能し、そこで改行を強制するべきではありませんか?)
<?xml version="1.0" encoding="UTF-8" ?><document>Here is the name you typed:<br/><theUsersName>johnson</theUsersName></document>
繰り返しますが、交換する場合は次の点に注意してください。
$uName = $_POST["userName"];
昔ながらの:
$uName = "John";
すべてが完璧に機能し、「John」という名前が私のUILabelに正しく表示されます...