CakePhp从字符串生成XML文件

时间:2015-05-06 17:11:28

标签: php xml cakephp

我试图生成一个XML文件,通过我正在生成的发票发送。我在字符串中的XML是下一个:

<?xml version="1.0" encoding="UTF-8"?>
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:implocal="http://www.sat.gob.mx/implocal" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd" version="3.2" serie="Z" folio="155" fecha="2015-04-06T15:26:14" subTotal="1.00" total="1.32" certificado="" noCertificado="" TipoCambio="1" Moneda="MXN" metodoDePago="no aplica" sello="" tipoDeComprobante="ingreso" formaDePago="no aplica" LugarExpedicion="no aplica">
    <cfdi:Emisor rfc="ZFL080519LG0" nombre="ZURITA FLORERIAS S.A. DE C.V.">
        <cfdi:DomicilioFiscal calle="Avenida 14 Sur" noExterior="5347" noInterior="B" colonia="Jardines San Manuel" localidad="Puebla" municipio="Puebla" estado="Puebla" pais="México Teléfono 2224974551" codigoPostal="72570" />
        <cfdi:ExpedidoEn pais="México" />
        <cfdi:RegimenFiscal Regimen="Persona Moral del Regimen General" />
    </cfdi:Emisor>
    <cfdi:Receptor rfc="GOMA890623M50" nombre="ARANTXA GONZALEZ MENDOZA">
        <cfdi:Domicilio calle="NORTE" noExterior="1" noInterior="O" colonia="LA PAZ" localidad="PUEBLA" municipio="PUEBLA" estado="PUEBLA" pais="MEXICO" codigoPostal="00000" />
    </cfdi:Receptor>
    <cfdi:Conceptos>
        <cfdi:Concepto cantidad="1" unidad="NO APLICA" descripcion="NO APLICA" valorUnitario="1.00" importe="1.00" />
    </cfdi:Conceptos>
    <cfdi:Impuestos totalImpuestosTrasladados="0.16">
        <cfdi:Traslados>
            <cfdi:Traslado impuesto="IVA" tasa="16.00" importe="0.16" />
        </cfdi:Traslados>
    </cfdi:Impuestos>
    <cfdi:Complemento>
        <implocal:ImpuestosLocales version="1.0" TotaldeRetenciones="0.00" TotaldeTraslados="0.16">
            <implocal:TrasladosLocales ImpLocTrasladado="TRASLADADO" Importe="0.16" TasadeTraslado="16.00" />
        </implocal:ImpuestosLocales>
    </cfdi:Complemento>
</cfdi:Comprobante>

我使用CakePhp Xml::Build($string);生成XML,但由于某种原因,并非所有变量都经过。我猜测Xml不是正在构建的东西。这是生成XML的代码。

$XMLString = '<?xml version="1.0" encoding="UTF-8"?><cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:implocal="http://www.sat.gob.mx/implocal" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd" version="3.2" serie="Z" folio="155" fecha="2015-04-06T15:26:14" subTotal="1.00" total="1.32" certificado="" noCertificado="" TipoCambio="1" Moneda="MXN" metodoDePago="no aplica" sello="" tipoDeComprobante="ingreso" formaDePago="no aplica" LugarExpedicion="no aplica"><cfdi:Emisor rfc="ZFL080519LG0" nombre="ZURITA FLORERIAS S.A. DE C.V."><cfdi:DomicilioFiscal calle="Avenida 14 Sur" noExterior="5347" noInterior="B" colonia="Jardines San Manuel" localidad="Puebla" municipio="Puebla" estado="Puebla" pais="México Teléfono 2224974551" codigoPostal="72570" /><cfdi:ExpedidoEn pais="México" /><cfdi:RegimenFiscal Regimen="Persona Moral del Regimen General" /></cfdi:Emisor><cfdi:Receptor rfc="GOMA890623M50" nombre="ARANTXA GONZALEZ MENDOZA"><cfdi:Domicilio calle="NORTE" noExterior="1" noInterior="O" colonia="LA PAZ" localidad="PUEBLA" municipio="PUEBLA" estado="PUEBLA" pais="MEXICO" codigoPostal="00000" /></cfdi:Receptor><cfdi:Conceptos><cfdi:Concepto cantidad="1" unidad="NO APLICA" descripcion="NO APLICA" valorUnitario="1.00" importe="1.00" /></cfdi:Conceptos><cfdi:Impuestos totalImpuestosTrasladados="0.16"><cfdi:Traslados><cfdi:Traslado impuesto="IVA" tasa="16.00" importe="0.16" /></cfdi:Traslados></cfdi:Impuestos><cfdi:Complemento><implocal:ImpuestosLocales version="1.0" TotaldeRetenciones="0.00" TotaldeTraslados="0.16"><implocal:TrasladosLocales ImpLocTrasladado="TRASLADADO" Importe="0.16" TasadeTraslado="16.00" /></implocal:ImpuestosLocales></cfdi:Complemento></cfdi:Comprobante>';
$document=Xml::build($XMLString, array('encoding' => 'UTF-8', 'return' => 'simplexml'));

当我检查谷歌浏览器上使用元素检查器接收的变量时,我回来的是下一个。

documnet: Object
@attributes: Object
LugarExpedicion: "no aplica"
Moneda: "MXN"
TipoCambio: "1"
certificado: ""
fecha: "2015-04-06T15:26:14"
folio: "155"
formaDePago: "no aplica"
metodoDePago: "no aplica"
noCertificado: ""
sello: ""
serie: "Z"
subTotal: "1.00"
tipoDeComprobante: "ingreso"
total: "1.32"
version: "3.2"

并非所有数据都经过。只有标题。我想将字符串作为file.xml发送,这是我必须要做的。这样做的更简单方法的任何想法?或者我做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

你只需要将 $ XMLString 传递给XML视图......我看不出需要Xml :: build

请检查:http://book.cakephp.org/2.0/en/views/json-and-xml-views.html