【问题标题】:XML error Open quote is expected for attribute "value" when programming in PHP在 PHP 中编程时,属性“值”需要打开引号
【发布时间】:2012-09-06 21:29:40
【问题描述】:

您好,感谢您的帮助,

我正在使用 PHP 编写 XML 请求,我遇到的问题是当我在 value 字段中使用变量时,它返回错误。但是,当我手动输入值时,它可以完美运行。 在 field name='Serial_Number' 您将看到 $MREPSerial 是变量,我们假设 在 PHP 中,我们有 $MREPSerial = 'A-000-1042';下面的 XML 会出错。但是,如果我仅用 XML 中的值替换 $MREPSerial,它将是成功的。任何帮助将不胜感激。谢谢!

$MREPSerial  = htmlspecialchars(strtoupper($_POST['NSMREP']));
echo "Hi".$MREPSerial;
<ZohoCreator>
            <applicationlist>
                <application name='ajout-de-materiel'>
                    <formlist>
                        <form name='MREP'>
                            <update>
                                <criteria>
                                    <field name='Serial_Number' compOperator='Equals' value={$MREPSerial}></field>
                                    <reloperator>AND</reloperator>
                                    <field name='MREP_Type' compOperator='Equals' value='0'></field>                            
                                </criteria>
                                <newvalues>
                                    <field name='Is_being_Used' value='TRUE'></field>
                                </newvalues>
                            </update>    
                        </form>
                    </formlist>
                </application>
            </applicationlist>
        </ZohoCreator>";

... echo 上的返回响应(包括我回显的 XML)

A-000-1012HI! <?xml version="1.0" encoding="UTF-8" ?>
<response><errorlist><error><code>2830</code><message><![CDATA[Open quote is expected for attribute "value" associated with an  element type  "field".]]></message></error></errorlist></response>

如果我将 echo 更改为 '".$MREPSerial." 时的返回响应。是:

A-000-1012HI! <?xml version="1.0" encoding="UTF-8" ?>
<response><result><form name="MREP"><update><criteria><field name="Serial_Number" compOperator="Equals" value=""></field><reloperator>AND</reloperator><field name="MREP_Type" compOperator="Equals" value="0"></field></criteria><newvalues><field name="Is_being_Used"><value><![CDATA[TRUE]]></value></field></newvalues> <status>Failure, No Records Found With Specified Criteria</status></update></form></result></response>

【问题讨论】:

  • 你是如何跳入和跳出 PHP 的? ...compOperator='Equals' value='&lt;?PHP echo $MREPSerial; ?&gt;'&gt;...
  • 对不起,这都是在 PHP 中我只是没有添加整个 PHP 页面,XML 是一个变量 $param = "XMLString= ....
  • 你能帮我做以下吗? echo '[['.$MREPSerial.']]'; 并再次显示输出...
  • 在 echo 这是返回的内容 [[A-000-1012]] (1012 是因为我更改了数字,但应该可以)
  • 没有线索...没有意义。也许在您分配和测试 $MREPSerial 的位置之前/之后发布更广泛的代码部分......也许是别的东西。

标签: php xml zoho


【解决方案1】:

您需要在 value 属性的实际值周围加上引号,如下所示:

<field name='Serial_Number' compOperator='Equals' value='{$MREPSerial}'></field>

【讨论】:

  • 感谢您的回复,不幸的是我试过了,我收到了 XML 消息而不是 FALSE 值不存在,那是因为 XML 将值显示为空白(如下所示)
  • 你确定变量被填充了吗?
  • 如果值为空白,则问题出在输出变量上。你需要echoprint。我不确定你是如何使用这个模板的,所以我没有对此发表评论。如果允许空字符串,那么您可能需要在此处写 'null' 或其他内容作为空字符串的占位符。
  • 该值已填充,我已回显该值并显示,我将编辑信息以显示我是如何做到的。
【解决方案2】:

刚刚看到你的";关闭标签...

为那条线试试这个

 <field name='Serial_Number' compOperator='Equals' value='".$MREPSerial."'></field> 

【讨论】:

  • 感谢您的回复,同样报错
    AND失败,未找到符合指定条件的记录
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
  • 2018-06-25
  • 2015-12-31
  • 2013-03-15
相关资源
最近更新 更多