【问题标题】:Why can't I parse this SOAP response with SimpleXML?为什么我不能用 SimpleXML 解析这个 SOAP 响应?
【发布时间】:2012-02-28 11:21:32
【问题描述】:

我已经为这个问题寻找了几个小时的解决方案,但似乎没有任何效果,我已经阅读了http://www.sitepoint.com/simplexml-and-namespaces/,但它似乎对我不起作用。

这是我要解析的 xml:

<?xml version="1.0" encoding="utf-8"?>
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <FlokkurResponse xmlns="http://www2.ksi.is/vefthjonustur/mot/">
      <FlokkurSvar>
        <ArrayFlokkur>
          <Flokkur>
            <FlokkurHeiti>1. flokkur</FlokkurHeiti>
            <FlokkurNumer>113</FlokkurNumer>
          </Flokkur>
          <Flokkur>
            <FlokkurHeiti>2. flokkur</FlokkurHeiti>
            <FlokkurNumer>109</FlokkurNumer>
          </Flokkur>
          <Flokkur>
            <FlokkurHeiti>3. flokkur</FlokkurHeiti>
            <FlokkurNumer>124</FlokkurNumer>
          </Flokkur>
        </ArrayFlokkur>
        <VillaNumer>0</VillaNumer>
      </FlokkurSvar>
    </FlokkurResponse>
  </soap:Body>
</soap:Envelope>

我想做的是获取每个 FlokkurHeiti 的价值,所以我想我可以这样做:

foreach ($xml->Flokkur as $x) {
    echo $x->FlokkurHeiti.'<br/>';
}

您可以看到 FLokkur 和 FlokkurHeiti 都没有任何命名空间或属性,但我没有得到任何输出。

我也试过

$t = $xml->children("http://schemas.xmlsoap.org/soap/envelope/")->Body->FlokkurResponse->children("http://www2.ksi.is/vefthjonustur/mot/")->FlokkurSvar->ArrayFlokkur->Flokkur;
foreach ($t as $x) {
    echo $x->FlokkurHeiti.'<br/>';
}

但获取节点不再存在警告

谁能帮忙,谢谢

【问题讨论】:

    标签: xml soap simplexml


    【解决方案1】:

    如您所见,FLokkur 和 FlokkurHeiti 都没有任何命名空间

    实际上,他们一个命名空间:xmlns="http://www2.ksi.is/vefthjonustur/mot/"

    也许你可以看看:http://www.w3.org/TR/REC-xml-names/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 2012-09-27
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多