我一直在寻找这个问题的解决方案好几个小时但似乎什么都没有用,我读过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/>';
}
但是获取Node不再存在警告
有人可以帮忙,谢谢
答案 0 :(得分:0)
正如您所看到的,FLokkur和FlokkurHeiti都没有任何名称空间
实际上,他们拥有命名空间:xmlns="http://www2.ksi.is/vefthjonustur/mot/"