2014-10-29 52 views
2

我想使用'simplexml_load_file'读取anXML文件,它工作正常,除了一个文件具有这些标签'',''。当我尝试阅读这个文件时,它失败了,就像它是一个空白文件。比我试图删除这个字符':',并且它的工作原理...使用PHP读取XML的问题

有没有更好的方式来阅读此,而不删除':'字符?

这里的XML

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Header> 
     <nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao"> 
      <cUF>43</cUF> 
      <versaoDados>3.10</versaoDados> 
     </nfeCabecMsg> 
    </soap:Header> 
    <soap:Body> 
     <nfeAutorizacaoLoteResult xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao"> 
     <retEnviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10"> 
      <tpAmb>2</tpAmb> 
      <verAplic></verAplic> 
      <cStat>104</cStat> 
      <xMotivo>Lote processado</xMotivo> 
      <cUF>43</cUF>   
      <dhRecbto>2014-10-29T08:49:23-02:00</dhRecbto> 
      <protNFe versao="3.10"> 
       <infProt> 
        <tpAmb>2</tpAmb> 
        <verAplic></verAplic> 
        <chNFe></chNFe> 
        <dhRecbto>2014-10-29T08:49:23-02:00</dhRecbto> 
        <nProt>143140001934763</nProt> 
        <digVal></digVal> 
        <cStat>100</cStat> 
        <xMotivo>Autorizado o uso da NF-e</xMotivo> 
       </infProt> 
      </protNFe> 
     </retEnviNFe> 
     </nfeAutorizacaoLoteResult> 
    </soap:Body> 
</soap:Envelope> 
+0

请格式化代码和标志,它的标签是造成问题。 – 2014-10-29 15:46:35

+0

我需要读取最后一个标记​​,但我无法通过这些标记打开此XML 2014-10-29 15:51:27

+0

为什么不使用SoapClient类? http://php.net/manual/en/soapclient.soapclient – Anthony 2014-10-29 15:58:54

回答

0

在一个XML文件,你必须逃脱特殊字符。否则,你的XML语法被破坏。

http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references

其他想也许去取死XML请求不是UTF-8。

+0

但是这个XML不是我自己制作的,我从服务器收到它返回 – 2014-10-29 15:46:49

+0

好吧你如何获取文件?也许你的编码不​​正确? – Stony 2014-10-29 15:47:34

+0

这是从服务器返回,我发送我的XML和服务器发送给我这个XML。这是一个金融体系。 – 2014-10-29 15:54:23