Php 如何基于WSDL自动分配XML数据

Php 如何基于WSDL自动分配XML数据,php,xml,web-services,soap,wsdl,Php,Xml,Web Services,Soap,Wsdl,我目前正在开发一个关于php中的SOAP Web服务的框架,我希望创建一个系统,在给定WSDL文档的情况下自动尝试创建和分配XML。我正在为soap服务使用本机php库 我使用的Web服务都有许多相同的XML字段,但名称不同 我今天的代码如下所示: $data = array( "Person" => array( "pw" => "123", "username" => "foo", "email" => "foo

我目前正在开发一个关于php中的SOAP Web服务的框架,我希望创建一个系统,在给定WSDL文档的情况下自动尝试创建和分配XML。我正在为soap服务使用本机php库

我使用的Web服务都有许多相同的XML字段,但名称不同 我今天的代码如下所示:

$data = array(
    "Person" => array(
        "pw" => "123",
        "username" => "foo",
        "email" => "foo@foo.com"
    )
)
我想用一个基于regex的wsdl解析器类型的函数来替换这段代码,该函数将在wsdl中搜索所有“标准”字段,然后为我自动填充这些字段,并返回完成了一半的数据数组,我随后手动填充这些数据数组。这背后的想法是每次添加新的webservice功能时都要节省时间,并防止系统中的现有webservice合作伙伴将其数据变量从例如电子邮件更改为电子邮件时出错。发生的事情比你想象的要多


现在,这个想法会不会因为regex函数的开销太大而变得愚蠢,而且最终会被证明比简单地手动映射每个xml名称空间要复杂得多?我想的东西有什么功能吗?就像ThisVariableFitSomeWhereInthisXML(值、名称空间、wsdl)一样?

您的想法一点也不愚蠢,但是由于wsdl是XML,我建议使用XML解析器而不是正则表达式解析器。接下来,您具体的编程问题是什么?当我得到一个新的webservice客户端时,我想跳过手动映射。因此,我不希望根据WSDL手动映射数据,而是希望有一个函数来为我进行映射。该函数将使用我提出的原始问题中的数组,填写XML模式并返回给我。因此,如果我将数组发送到函数中,我将返回以下XML模式:123 foofoo@foo.com代码还检查这些变量是否也在WSDL文件中