XML 节点不同于 Php 肥皂

XML Nodes differ from Php Soap

大家好,我是 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 中如何更改它们?

提前致谢。

意思是一样的

soapenvSOAP-ENV 是实际命名空间 http://www.w3.org/2003/05/soap-envelope/ 的别名。 XML 解析器将读取名称空间定义并匹配名称空间值。在 PHP DOM 中,您将在 $namespaceURI 属性.

中找到命名空间

以下4个例子都可以读作{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/"/>
  • <Envelope xmlns="http://www.w3.org/2003/05/soap-envelope/"/>

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