XML节点与Php Soap不同

时间:2018-03-20 12:37:53

标签: php xml soap soap-client

大家好我是xml的新手,如果上面两个代码之间有任何区别,我很好奇:

<soapenv:Envelope xmlns......>
  <gro:GetGeography>
    <gro:request>
      <gro:ClientIPAddress>?</gro:ClientIPAddress>
    </gro:request>
  </gro:GetGeography>
</soapenv:Envelope>

<SOAP-ENV:Envelope xmlns......> 
 <ns1:GetGeography>
    <ns1:request>
      <ns1:ClientIPAddress>?</ns1:ClientIPAddress>
    </ns1:request>
  </ns1:GetGeography>
</SOAP-ENV:Envelope>

所以我必须像第一个那样提出请求,但Php上的SoapClient正在创建类似底层的代码。

有什么区别吗?例如,第一个有gro:,第二个有ns1:

此外,我可以看到<soapenv>与第二<SOAP_ENV>不同,是否区分大小写?

我没有得到任何回复,但我不确定问题是在这里还是在其余的代码上。但我很好奇,我之前提到的这些有什么不同吗?如果是,在Php中改变它们的方式是什么?

提前致谢。

1 个答案:

答案 0 :(得分:2)

意思是一样的。

void OnDelete(object sender, EventArgs e) { _connection.DeleteAsync(SelectedSaveData); _saveData.Remove(SelectedSaveData); } soapenv是实际名称空间SOAP-ENV的别名。 XML解析器将读取命名空间定义并匹配命名空间值。在PHP DOM中,您将在http://www.w3.org/2003/05/soap-envelope/属性中找到命名空间。

以下4个示例均可读作$namespaceURI

  • {http://www.w3.org/2003/05/soap-envelope/}Envelope
  • <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"/>
  • <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope/"/>
  • <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope/"/>

可以在任何元素节点上重新定义名称空间前缀。命名空间需要是唯一的,因此它们往往是冗长而复杂的。为了使XML更易于阅读(和更小),别名被用作标记前缀。