PHP: Soap Client xmlattribute



我尝试使用PHP SOAP客户端。

但是肥皂XML需要包含一个XML属性,例如" opcode = eq"此示例:

     <ws:Query>
        ....
        <com:Properties>
           <com:xx>yy</com:xx>
           <com:ab>cc</com:ab>
        </com:Properties>
        <com:QueryCondition>
           <com:CmpOp opCode="EQ">
              <com:Property>FolderName</com:Property>
              <com:Value>AB028</com:Value>
           </com:CmpOp>
        </com:QueryCondition>
     </ws:Query>

我尝试通过使用此代码来阅读此信息:

$this->client = new SOAPClient(__DIR__ . '/WSDL.XML', array(
        'trace' => 1, 
        'exception' => 1
    ));
$this->client->query((object) array(
        // ..
        'Properties' => (object) array(
            'xx' => 'yy',
            'ab' => 'cc'
        ),
        'QueryCondition' => (object) array(
            'CmpOp' => (object) array(
                'opCode' => 'EQ',
                '_' => (object) array(
                    'Property' => 'FolderName',
                    'Value' => 'AB028',
                ),
            ),
        ),
    ));

,但这导致:

    <com:QueryCondition>
       <com:CmpOp>
          <com:Property>FolderName</com:Property>
          <com:Value>AB028</com:Value>
       </com:CmpOp>
       </com:_><com:opCode>EQ</com:opCode></com:_>
    </com:QueryCondition>

有人可以告诉我正确的语法吗?

我在Internet dosent工作中找到的所有这些东西。

我发现的唯一工作解决方案是:

$this->client->query((object) array(
        // ..
        'Properties' => (object) array(
            'xx' => 'yy',
            'ab' => 'cc'
        ),
        'QueryCondition' => (object) array(
            'CmpOp' => new SoapVar(
                        '<CmpOp opCode="EQ">' .
                            '<Property>FolderName</Property>' . 
                            '<Value>' . htmlspecialchars('AB028'). '</Value>' . 
                        '</CmpOp>',
                    XSD_ANYXML
                )
            ),
        ),
    ));

最新更新