将字符串作为XML发送

时间:2013-11-08 18:48:26

标签: php xml simplexml

我必须将格式化为XML的字符串作为XML文档发送到Web服务。转动字符串的最佳方法是什么

 $input_xml = "
<WEB>
<header>
<WebSiteID>WGI</WebSiteID>
<WebDocNumber>Doc10</WebDocNumber>
<OrderCaptureDateTime>10/07/2013</OrderCaptureDateTime>
</header>
<item>
<ItemNumber>FG-00087</ItemNumber>
<ReplacementItem></ReplacementItem>
<Quantity>2</Quantity>
<UnitPrice>6.31</UnitPrice>
<SalesTaxCode></SalesTaxCode>
<SalesTaxAmt>0</SalesTaxAmt>
</item>
</WEB>";

我使用的是$xmlget = simplexml_load_string($input_xml);,只是将$xmlget发送到SOAP应用程序。

$requestParams = array(
    'XMLDocNumber' => 'Test_Doc',
    'InboundXML' =>  $xmlget,
    'sStatus' =>''
);

数据的接收者说XML不是“正确格式”我不知道问题的终点是什么,但我想我会请求帮助。

修改

根据我在下面得到的答案,我现在只是发送XML数据字符串。但是现在我从SOAP应用程序中得到以下错误

stdClass Object ( [InboundApprovedXMLResult] => [sStatus] => Invalid XML Header Format;

我甚至将XML标头添加到我的字符串中,所以现在它开始于:<?xml version="1.0" encoding="UTF-8"?>仍然会出现相同的错误。

2 个答案:

答案 0 :(得分:1)

我不知道您的服务描述(WSDL),但我想它应该是:

$requestParams = array(
    'XMLDocNumber' => 'Test_Doc',
    'InboundXML' =>  $input_xml,
    'sStatus' =>''
);

传递simple_xml_element对我来说毫无意义。

答案 1 :(得分:1)

simplexml_load_string()加载XML字符串并返回一个对象,但您应该发送实际的字符串。

将您的代码更改为:

$requestParams = array(
    'XMLDocNumber' => 'Test_Doc',
    'InboundXML' =>  $input_xml,
    'sStatus' =>''
);