通过php读取XML

时间:2014-09-23 19:46:02

标签: php xml

所以我有这个XML,我试图通过php的SimpleXML类阅读。

<ns0:ASN xmlns:ns0="http://schemas.microsoft.com/dynamics/2008/01/documents/ASN">
<CustPackingSlipJour xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/ASN" class="entity">
<BON_FileNameSeqNum>4</BON_FileNameSeqNum>
<!-- funktionell: Internt löpnr  -->
<BON_TotalNetAmount>726.00</BON_TotalNetAmount>
<!-- funktionell: Totalt belopp  -->
<BON_TotalTaxAmount>181.50</BON_TotalTaxAmount>
<!-- funktionell: Momsbelopp  -->
<InvoiceAccount>9001</InvoiceAccount>
<!-- funktionell:  -->
<LanguageId>SV</LanguageId>
<!-- funktionell: Språk  -->
<OrderAccount>9001</OrderAccount>
<!-- funktionell: Butiks nr för intern användning! -->
<Qty>4.00</Qty>
<!-- funktionell: Total lev kvant!  -->
<SalesId>24</SalesId>
<!-- funktionell:Försäljningsordernr!  -->
<CustPackingSlipTrans class="entity">
<BON_LineNetAmount>149.00</BON_LineNetAmount>
<!-- funktionell: Orderradsbelopp! -->
<BON_SalesPrice>0.00</BON_SalesPrice>
<!-- funktionell: Försäljningspris!  -->
<DeliveryDate>2014-09-09</DeliveryDate>
<!-- funktionell: Leveransdag! -->
<ItemId>10001</ItemId>
<!-- funktionell: Artikelnr!  -->
<Ordered>1.00</Ordered>
<!-- funktionell:Beställd kvantitet!  -->
<PackingSlipId>00000004_061</PackingSlipId>
<!-- funktionell:  -->
<Qty>1.00</Qty>
<!-- funktionell:Levererad kvantitet!  -->
<InventReportDimHistory class="entity">
<InventDim class="entity"/>
</InventReportDimHistory>
</CustPackingSlipTrans>

我试图通过代码访问它的元素: -

<?php
$asn=simplexml_load_file("ASN.xml");
echo $asn->CustPackingSlipTrans[0]->ItemId;
?>

但这似乎并没有奏效。我得到一个空白输出。我已经阅读了一些关于Simplexml类的教程,并且已经达到了这个代码。但我不确定我在这里做错了什么。 我如何访问XML的每个元素?

所有建议都表示赞赏。

2 个答案:

答案 0 :(得分:1)

您应该始终尝试遵循以下顺序: -

echo $objectname->parentname->childname->subchild

这始终有效。但是,您应该始终缩进XML。这是主要要求。如果你缩进,你可以很容易地看到哪个是父元素,哪个是子元素。

答案 1 :(得分:0)

如果你的XML正确缩进,你就会看到它:

<CustPackingSlipJour ...>
    ...
    <CustPackingSlipTrans ...>
        ...
        <ItemId>10001</ItemId>

所以你的代码应该是:

echo $asn->CustPackingSlipJour[0]->CustPackingSlipTrans[0]->ItemId;
         ^^^^^^^^^^^^^^^^^^^^^^^^