Foros del Web » Programando para Internet » PHP »

Leer archivo XML

Estas en el tema de Leer archivo XML en el foro de PHP en Foros del Web. Hola a todos/as He leido manuales de como hacerlo pero todo lo que hago no me funciona, incluso aportaciones en este foro, pero no soy ...
  #1 (permalink)  
Antiguo 26/10/2018, 04:44
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 18 años, 1 mes
Puntos: 32
Leer archivo XML

Hola a todos/as

He leido manuales de como hacerlo pero todo lo que hago no me funciona, incluso aportaciones en este foro, pero no soy capaz de leer el archivo XML..


Esto lo tengo en un archivo: file_export.xml

Código PHP:
<Export>
    <
Products>
        <
Product Id="1" Name="Jack Daniels" ButtonText="Jack Daniels" Color="#BACDE2" PLU="" FamilyId="2" VatId="4" UseAsDirectSale="false" SaleableAsMain="true" SaleableAsAddin="true" IsSoldByWeight="false" AskForPreparationNotes="false" AskForAddins="true" PrintWhenPriceIsZero="true" PreparationTypeId="1" PreparationOrderId="1" CostPrice="0.00" MinAddins="0" MaxAddins="1">
            <
Barcodes>
                <
Barcode Value="803400001"/>
            </
Barcodes>
            <
Prices>
                <
Price PriceListId="1" MainPrice="6.00" AddinPrice=""/>
                <
Price PriceListId="2" MainPrice="9.00" AddinPrice=""/>
                <
Price PriceListId="3" MainPrice="8.00" AddinPrice=""/>
            </
Prices>
            <
Addins>
                <
Addin ProductId="4"/>
                <
Addin ProductId="9"/>
            </
Addins>
        </
Product>
    
        <
Product Id="2" Name="JB" ButtonText="JB" Color="#BACDE2" PLU="" FamilyId="2" VatId="4" UseAsDirectSale="false" SaleableAsMain="true" SaleableAsAddin="true" IsSoldByWeight="false" AskForPreparationNotes="false" AskForAddins="true" PrintWhenPriceIsZero="true" PreparationTypeId="1" PreparationOrderId="1" CostPrice="0.00" MinAddins="0" MaxAddins="1">
            <
Barcodes>
                <
Barcode Value="803400002"/>
            </
Barcodes>
            <
Prices>
                <
Price PriceListId="1" MainPrice="5.00" AddinPrice=""/>
                <
Price PriceListId="2" MainPrice="7.00" AddinPrice=""/>
                <
Price PriceListId="3" MainPrice="6.00" AddinPrice=""/>                                                                                                                                                                       
            <
Addins>
                <
Addin ProductId="4"/>
                <
Addin ProductId="9"/>
            </
Addins>
        </
Product>
    </
Products>
</
Export>
            </
Prices
Mi pregunta es como extraigo los valores que tiene cada lineas, en este caso tiene varias entre comillas.

Cargo el aarchivo con simplexml

Código PHP:
$xml simplexml_load_file("file_export.xml"); 
Aquí me pierdo, por mas combinaciones que he usado no he extraido nada:

Código PHP:
    foreach ($xml as $producto){
        echo 
'Prueba: '.$producto->Product->Name.'<br>';
        } 
Gracias a todos !!!
__________________
Somos una serie de acontecimiento que puede venir al caso en un momento dado.
  #2 (permalink)  
Antiguo 28/10/2018, 18:41
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Leer archivo XML

Tienes mal tu xml, abajo hay una etiqueta (prices) sin cerrar prices (que sería el padre)

Luego Te recomiendo sacar la etiqueta export y dejar solo productos.

Luego si quieres obtener el atributo sería asi:

$producto["name"]

Mira este ejemplo simple:

p.xml
Código XML:
Ver original
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Products>
  3.     <Product name="asd">E1</Product>
  4.     <Product name="123">E2</Product>
  5.     <Product name="xyz">E3</Product>
  6. </Products>

Código PHP:
Ver original
  1. $xml=simplexml_load_file("p.xml");
  2. for($k=0;$k<sizeof($xml->Product);$k++){
  3. echo ($k+1).". ".$xml->Product[$k]["name"]."<br>";
  4. }

Saludos.
  #3 (permalink)  
Antiguo 30/10/2018, 03:46
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 18 años, 1 mes
Puntos: 32
Respuesta: Leer archivo XML

Hola alvaro_trewhela, muchas gracias por tu respuesta.

Comentarte que la última etiqueta <price> se me ha escapado, es un extracto de un archivo muy grande (para no copiarlo entero)

Este archivo está extraído de una aplicación, con lo que no puedo modificarla, es así, tal cual, como lo exporta.

He conseguido extraer todos los valores de <Product> Name, ButtonText, Color, etc, pero me es imposible bajar un nivel y extrear los demás, no se como hacerlo

Código PHP:
<?php
header
("Content-type: text/html; charset=utf-8");
$xml simplexml_load_file("archivo.xml");

foreach (
$xml->Products->Product as $producto)
    {
        
$atributos=$producto->attributes();
        echo 
"Item ".$atributos['Name']."<br>"
    }
?>
__________________
Somos una serie de acontecimiento que puede venir al caso en un momento dado.

Etiquetas: funcion, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:09.