1
我遇到了一個我無法解決的問題。我使用DOMXPath檢索MsgId
標籤下面的XML文件中的值:DOMXPath - 獲取節點
<?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>
以下是我的PHP代碼片段來查詢與DOMXPath的XML:
$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
我測試與此tool查詢,它似乎是正確的。
有沒有人有一個想法,爲什麼xpath表達式在這種情況下不起作用?我在這裏錯過了一些細節嗎?
這就是問題。如果刪除名稱空間,它將正常工作,因爲所有內容都位於默認名稱空間中。 – prodigitalson
謝謝它完美的作品:) – BwaBwa