如何在PHP中访问此XML文件中的数据?

问题描述 投票:0回答:1

因此,我有一个XML发票,我想访问其中的数据,但我对如何做到这一点一无所知。我尝试了在线遵循各种指南的方法,但没有任何效果,我得到了零错误,但是零结果。

XML是这里:

<?xml version="1.0" encoding="UTF-8"?>
<dat:dataPack id="fa001" application="StwTest" version="2.0" note="Import" xmlns:dat="http://www.stormware.cz/schema/version_2/data.xsd" xmlns:inv="http://www.stormware.cz/schema/version_2/invoice.xsd" xmlns:typ="http://www.stormware.cz/schema/version_2/type.xsd">

<dat:dataPackItem id="20007" version="2.0">
    <inv:invoice version="2.0">
        <inv:invoiceHeader>
            <inv:invoiceType>issuedInvoice</inv:invoiceType>
            <inv:number>
              <typ:numberRequested>20007</typ:numberRequested>
            </inv:number>
            <inv:paymentType>
              <typ:paymentType>draft</typ:paymentType>
            </inv:paymentType>
            <inv:carrier>
            <typ:ids>magic horse</typ:ids>
            </inv:carrier>
            <inv:numberOrder>20007</inv:numberOrder>
            <inv:symVar>20007</inv:symVar>
            <inv:date>2020-05-11</inv:date>
            <inv:dateTax>2020-05-13</inv:dateTax>
            <inv:dateDue>2020-05-27</inv:dateDue>
        </inv:invoiceHeader>                
    </inv:invoice>
</dat:dataPackItem>

</dat:dataPack>

例如,我想访问日期2020-05-11,所以我尝试了此操作:

$payment_vat_xml = simplexml_load_file(filepath);
echo $payment_vat_xml->{'dat:dataPackItem'}->{'inv:invoice'}->{'inv:invoiceHeader'}->{'inv:date'};

但是我没有结果。

非常感谢任何帮助,欢呼。

php xml simplexml
1个回答
0
投票

正确的方法是使用

echo $payment_vat_xml->xpath('/dat:dataPack/dat:dataPackItem/inv:invoice/inv:invoiceHeader/inv:date')[0];

可在此处找到详细说明:Reference - how do I handle namespaces (tags and attributes with colon in) in SimpleXML?

感谢The fourth bird

© www.soinside.com 2019 - 2024. All rights reserved.