別の質問が掲載されましたが、私のエラーは不完全でした。 私は複数の名前空間を持つXMLを持っていますが、foreach内の値にアクセスする必要があります。PHPで複数の名前空間を持つXMLコンテンツから値の配列を取得する
私のXML列がある:私が別のユーザーによって助けられた
<ArrayOfSession xmlns:i='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://schemas.datacontract.org/2004/07/Vista.Online.BackOffice.Api.Models.V1'>
<Session>
<AreComplimentariesAllowed>true</AreComplimentariesAllowed>
<Attributes xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d3p1:string>0000000009</d3p1:string>
<d3p1:string>0000000011</d3p1:string>
</Attributes>
</Session>
</ArrayOfSession>
:その答えをRetrieving an array of values from an XML content with a namespace in PHP
私はいくつかのバリエーションを試してみました。これは動作していない私の現在の1、であること:
$xml->registerXPathNamespace('i', 'http://www.w3.org/2001/XMLSchema-instance');
$xml->registerXPathNamespace('j', 'http://schemas.datacontract.org/2004/07/Vista.Online.BackOffice.Api.Models.V1');
$xml->registerXPathNamespace('ns', 'http://schemas.microsoft.com/2003/10/Serialization/Arrays');
foreach($xml->xpath('//ns:d3p1') as $header){
var_export($header->xpath('//Attributes/ns:string'));
}
私も試してみました:
foreach($xml->xpath('//ns:d3p1') as $header){
var_export($header->xpath('//ns:string'));
}
これは私を遊説されます!
コードの残りのための私の現在の作業バージョンでは、私は要素を取得しています:
foreach($xml->Session as $event){
// Do Something with $event->AreComplimentariesAllowed
}
これは正常に動作しますが、私はちょうどそれらの属性の要素にアクセスすることはできません。
ありがとうございます。
ありがとうございました。私はまだ少し混乱している。これが最初に登録されていませんか? '$ xml-> registerXPathNamespace( 'i'、 'http://www.w3.org/2001/XMLSchema-instance'); $ xml-> registerXPathNamespace( 'j'、 'http://schemas.datacontract.org/2004/07/Vista.Online.BackOffice.Api.Models.V1'); $ xml-> registerXPathNamespace( 'ns'、 'http://schemas.microsoft.com/2003/10/Serialization/Arrays'); ' – David
'$ xml'変数で表されるSimpleXMLElementでのみ呼び出されますが、 $ header変数のメソッドSimpleXMLでは、各変数に何度も名前空間を登録する必要があります。ここに例があります:http://stackoverflow.com/a/29556930/2265374 – ThW
ありがとう。私は関係を見ることができますが、一緒にそれを作ることはできません:https://eval.in/683080 – David