构建一个等于xml标签的php对象

时间:2012-10-04 10:18:30

标签: php xml

我正在开发一个应用程序在php它从路透社API中提取数据我试图在进行SOAP调用之前添加请求参数,我有必须从我的请求生成的xml它必须看起来像这样:

<HeadlineMLRequest>
<Filter>
<MetaDataConstraint class="companies"  xmlns="http://schemas.reuters.com/ns/2006/04/14/rmds/webservices/news/filter">
<Value>MSFT.O</Value>
</MetaDataConstraint>
</Filter>
</HeadlineMLRequest>

当我构建我的请求参数对象时,我尝试了这个

protected function getRequest() {
$retval->HeadlineMLRequest->MaxCount = 10;
$retval->HeadlineMLRequest->Filter->MetaDataConstraint->class = "companies";
$retval->HeadlineMLRequest->Filter->MetaDataConstraint->Value = "MSFT.O";
return $retval;
}

但是当我回复最后一个xml请求时,我发现它就像这样

<ns1:headlinemlrequest>
<ns1:maxcount>
 10
</ns1:maxcount>
<ns1:filter>
 <ns2:metadataconstraint class="companies">
  <ns2:value>
  </ns2:value>
 </ns2:metadataconstraint>
</ns1:filter>

如果您注意到值为空虽然我将其设置为“MSFT.O”,请帮忙吗?

1 个答案:

答案 0 :(得分:0)

使用php soap的复杂请求没有详细记录,大多数示例仅显示基本技术。

尝试以下方法:

$metaData = '<MetaDataConstraint class="companies" xmlns="http://schemas.reuters.com/ns/2006/04/14/rmds/webservices/news/filter">
<Value>MSFT.O</Value>
</MetaDataConstraint>';

$xmlvar = new SoapVar($metaData, XSD_ANYXML);
$retval->HeadlineMLRequest->Filter->MetaDataConstraint = $xmlVar;