2011-11-17 90 views
1

當試圖在此處讀取文件時沒有返回任何內容......使用SimpleXMLElement解碼XML

我在做什麼錯?

開頭的XML文件

<?xml version="1.0" encoding="UTF-8"?> 
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-2" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:ns7="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:sdt="urn:oasis:names:specification:ubl:schema:xsd:SpecializedDatatypes-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2"><cec:UBLExtensions xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"><cec:UBLExtension><cec:ExtensionURI>urn:oasis:names:specification:ubl:profile:dsig:signature</cec:ExtensionURI><cec:ExtensionContent><sig:UBLDocumentSignatures xmlns:sig="urn:oasis:names:specification:ubl:schema:xsd:CommonSignatureComponents-2"><sig:SignatureInformation><cbc:ID>urn:oasis:names:specification:ubl:signatures:1</cbc:ID><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><XPath>count(ancestor-or-self::sig:UBLDocumentSignatures | here()/ancestor::sig:UBLDocumentSignatures[1]) &gt; count(ancestor-or-self::sig:UBLDocumentSignatures)</XPath></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><DigestValue>Agc2+1rOPYaPgixs6RTiLZzoj4H5/96eA8nv6dlU6yA=</DigestValue></Reference></SignedInfo><SignatureValue>Mp3ziREgnkg0jU+l+Jl+4viQKFTwMnY7DTFlK1jzbVZjV7r9nmnePSrr/nvdJWZt1bheKMiEMYBi 
ax7bcGUZYj4QFdO7z8W+MvsxGGG0TswRBay51J+ja08rtob/YQ5Z+Yc25PEko3nuePItYPVAKsXW 
E51EAWgVd/kXpRF6xrQ=</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>qjPnoh/BgvN22UWUVcwVYr9xWj49ffp2obvmR5WttIJssS5ZbCYOxjIjO3gIcNAu6NLFn5gpsp95 
FPNY1JDGII1qPnp9zyI6HKyA3yb5Vq9ONm2cLRfOz2zrvPdG+38ZLMzHe1rLALXEoIqfJWWt3u2B 
UvWP+h5ZYzm8px1gmJM=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIICATCCAWoCCQCo1AOqHHrvcDANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJBVTETMBEGA1UE 
CBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMB4XDTEwMDQw 
OTA5MTkyN1oXDTI5MTIyNTA5MTkyN1owRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3Rh 
dGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCBnzANBgkqhkiG9w0BAQEFAAOB 
jQAwgYkCgYEAqjPnoh/BgvN22UWUVcwVYr9xWj49ffp2obvmR5WttIJssS5ZbCYOxjIjO3gIcNAu 
6NLFn5gpsp95FPNY1JDGII1qPnp9zyI6HKyA3yb5Vq9ONm2cLRfOz2zrvPdG+38ZLMzHe1rLALXE 
oIqfJWWt3u2BUvWP+h5ZYzm8px1gmJMCAwEAATANBgkqhkiG9w0BAQUFAAOBgQARLOs0egYgj7q7 
mN0uthdbzAEg75Ssgh4JuOJ3iXI/sbqAIQ9uwsLodo+Fkpb5AiLlNFu7mCZXG/SzAAO3ZBLAWy4S 
KsXANu2/s6U5ClYd93HoZwzXobKb+2+aMf7KiAg1wHPUcyKx2c5nplgqQ7Hwldk9S9yzaRsYEGWT 
+xpSUA==</X509Certificate></X509Data></KeyInfo></Signature></sig:SignatureInformation></sig:UBLDocumentSignatures></cec:ExtensionContent></cec:UBLExtension></cec:UBLExtensions> 
<cbc:UBLVersionID>2.0</cbc:UBLVersionID> 
<cbc:CustomizationID>OIOUBL-2.01</cbc:CustomizationID> 
<cbc:ProfileID schemeAgencyID="320" schemeID="urn:oioubl:id:profileid-1.2">urn:www.nesubl.eu:profiles:profile5:ver2.0</cbc:ProfileID> 
<cbc:ID>10</cbc:ID> 
<cbc:IssueDate>2011-11-15</cbc:IssueDate> 
<cbc:InvoiceTypeCode listAgencyID="320" listID="urn:oioubl:codelist:invoicetypecode-1.1">380</cbc:InvoiceTypeCode> 

代碼

$file = 'tradeshift_invoice.xml'; 
if(is_file($file)){ 
    echo 'file exists<br><br>'; 
} 
else{ 
    echo 'file does not exists<br><br>'; 
} 

$xml = simplexml_load_file($file); 

//$xml = new SimpleXMLElement(simplexml_load_file($file), 0, true); 

echo 'count '.$xml->count().'<br><br>'; 

foreach($xml->children() as $child){ 
    print_r($child); 
} 

輸出

file exists 

count 0 
+1

什麼是你的XML數據? – ComFreek

+1

我想你忘了''! – ComFreek

回答

0

新的SimpleXMLElement的僅用於字符串數據,而不是一個文件。你想用:

simplexml_load_file($file) 

,而不是...

尋找它下:http://www.php.net/manual/function.simplexml-load-file.php

+0

已編輯我的問題..仍然相同..: -/ – clarkk

+0

如果你var_dump()你的$ xml,你能告訴我們它裏面有什麼嗎? –

+0

這是返回...對象(SimpleXMLElement)#1(0){} – clarkk