Ich stehe vor einem Problem, das ich nicht lösen kann. Ich verwende DOMXPath den Wert von MsgId
Tag der folgenden XML-Datei abzurufen:DOMXPath - Get Node
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>Test/20171013/CCT100621</MsgId>
<CreDtTm>2017-10-13T10:06:21</CreDtTm>
<NbOfTxs>62</NbOfTxs>
</GrpHdr>
</CstmrCdtTrfInitn>
</Document>
Das folgende ist mein PHP-Code-Snippet die XML mit DOMXPath abfragen:
$xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>Test/20171013/CCT100621</MsgId>
<CreDtTm>2017-10-13T10:06:21</CreDtTm>
<NbOfTxs>62</NbOfTxs>
</GrpHdr>
</CstmrCdtTrfInitn>
</Document>
XML;
$document = new DOMDocument;
$document->loadXML($xml);
$groupHeaderXPath = new DOMXPath($document);
echo $groupHeaderXPath->query('//GrpHdr/MsgId')->length; // returns 0
Ich teste die Abfrage mit diesem tool und es scheint, dass es korrekt ist.
Hat jemand eine Idee, warum der XPath-Ausdruck in diesem Kontext nicht funktioniert? Fehle ich hier einige Details?
Das ist das Problem. Wenn Sie den Namespace entfernen, funktioniert das problemlos, da sich alles im Standardnamespace befindet. – prodigitalson
Danke, es funktioniert perfekt :) – BwaBwa