次のXMLについて考えてみます。
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<myResponse xmlns="https://example.com/foo">
<myResult xmlns:a="https://example.com/bar" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:accountNumber>AAA</a:accountNumber>
<a:accountName>BBB</a:accountName>
<a:accountType>CCC</a:accountType>
</myResult>
</myResponse>
</s:Body>
</s:Envelope>
myResultとその下のすべての要素を選択しようとしています。
私が得た最も近いものは次のとおりです。
//*[local-name()='myResult']//a:*
これで要素の値がわかりますが、どの値がどの要素に属しているのかわかりません。
私はこれをPHPで行っています。これが(大まかに)私が使用しているコードです。
<?php
$xmlObject = new SimpleXMLElement($result);
$namespaces = $xmlObject->getNamespaces(true);
foreach($namespaces as $key => $value) {
if($key == '') {
$key = 'ns';
}
$xmlObject->registerXPathNamespace($key, $value);
}
$element = $xmlObject->xpath("//myResult");
?>
XPathとXML名前空間(ああ、私がどのように検索したか)についてたくさんの質問があったことは知っていますが、私の特定のケースに一致するものは見つかりませんでした。私がやりたいことは可能ですか?