Получить первый список тегов для первого продукта

#php #xml #tags

#php #xml #Теги

Вопрос:

извините за мой плохой английский, я понятия не имею, как это объяснить, я бегу. для выпадающего списка в html я должен восстановить только список тегов первого продукта.

если у вас есть идея или подсказка, извините за мой плохой английский

XML-файл

 <?xml version='1.0' encoding='utf-8'?>
<catalogue lang='french' date='24/03/2019'>
<produit num='0'>
<categorie><![CDATA[Boxers amp; Shorties]]></categorie>
<marque><![CDATA[Navigare]]></marque>
<collection><![CDATA[]]></collection>
<model><![CDATA[573E]]></model>
<product_id><![CDATA[3818]]></product_id>
<designation><![CDATA[Boxer 573E]]></designation>
<description><![CDATA[Navigare ref.573E - 
    Boxer homme 573E de la marque Navigare
    ligne permanente
    composition: Jersey/Coton/Elasthanne]]></description>
<attributs>
<option_1><![CDATA[Couleur boxer]]></option_1><value_1><![CDATA[blanc]]></value_1><attributs_prefix_1><![CDATA[]]></attributs_prefix_1><attributs_price_1_ht><![CDATA[]]></attributs_price_1_ht><option_2><![CDATA[Taille boxer]]></option_2><value_2><![CDATA[2XL]]></value_2><attributs_prefix_2><![CDATA[]]></attributs_prefix_2><attributs_price_2_ht><![CDATA[]]></attributs_price_2_ht><attributs_stock_qty><![CDATA[4]]></attributs_stock_qty><stock_ean><![CDATA[8031503033662]]></stock_ean><stock_gescom><![CDATA[573E000BLANC0050]]></stock_gescom></attributs>
<livraison_ht>5.76</livraison_ht>
<prix_achat_ht>5.3</prix_achat_ht>
<prix_public_conseille_ht>10.42</prix_public_conseille_ht>
<promo>non</promo>
<prix_promo_ht>0</prix_promo_ht><url><![CDATA[/catalogue/product_info.php?products_id=3818]]></url><img><![CDATA[navigare/573E_defaut.jpg]]></img><poids><![CDATA[0.15]]></poids><unite><![CDATA[KG]]></unite></produit>
<produit num='1'>
<categorie><![CDATA[Boxers amp; Shorties]]></categorie>
<marque><![CDATA[Navigare]]></marque>
<collection><![CDATA[]]></collection>
<model><![CDATA[573E]]></model>
<product_id><![CDATA[3818]]></product_id>
<designation><![CDATA[Boxer 573E]]></designation>
<description><![CDATA[Navigare ref.573E - 
    Boxer homme 573E de la marque Navigare
    ligne permanente
    composition: Jersey/Coton/Elasthanne]]></description>
<attributs>
<option_1><![CDATA[Couleur boxer]]></option_1><value_1><![CDATA[blanc]]></value_1><attributs_prefix_1><![CDATA[]]></attributs_prefix_1><attributs_price_1_ht><![CDATA[]]></attributs_price_1_ht><option_2><![CDATA[Taille boxer]]></option_2><value_2><![CDATA[S]]></value_2><attributs_prefix_2><![CDATA[]]></attributs_prefix_2><attributs_price_2_ht><![CDATA[]]></attributs_price_2_ht><attributs_stock_qty><![CDATA[6]]></attributs_stock_qty><stock_ean><![CDATA[8031503033624]]></stock_ean><stock_gescom><![CDATA[573E000BLANC0010]]></stock_gescom></attributs>
<livraison_ht>5.76</livraison_ht>
<prix_achat_ht>5.3</prix_achat_ht>
<prix_public_conseille_ht>10.42</prix_public_conseille_ht>
<promo>non</promo>
<prix_promo_ht>0</prix_promo_ht><url><![CDATA[/catalogue/product_info.php?products_id=3818]]></url><img><![CDATA[navigare/573E_defaut.jpg]]></img><poids><![CDATA[0.15]]></poids><unite><![CDATA[KG]]></unite></produit>
  

php-код

 $file = "file.xml";
function debutElement($parser, $name, $attrs)
{
    if (!empty($name)) {
        echo "<br>".$name; //liste des balises
    }
}

function finElement($parser, $name)
{
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "debutElement", "finElement");
if (!($fp = fopen($file, "r"))) {
    die("Impossible d'ouvrir le fichier XML");
}
while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
    die(sprintf("erreur XML : %s à la ligne %d", xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);
  

что я получаю в ответ

 CATALOGUE
PRODUIT
CATEGORIE
MARQUE
COLLECTION
MODEL
PRODUCT_ID
DESIGNATION
DESCRIPTION
ATTRIBUTS
OPTION_1
VALUE_1
ATTRIBUTS_PREFIX_1
ATTRIBUTS_PRICE_1_HT
OPTION_2
VALUE_2
ATTRIBUTS_PREFIX_2
ATTRIBUTS_PRICE_2_HT
ATTRIBUTS_STOCK_QTY
STOCK_EAN
STOCK_GESCOM
LIVRAISON_HT
PRIX_ACHAT_HT
PRIX_PUBLIC_CONSEILLE_HT
PROMO
PRIX_PROMO_HT
URL
IMG
POIDS
UNITE
PRODUIT
CATEGORIE
MARQUE
COLLECTION
MODEL
PRODUCT_ID
DESIGNATION
DESCRIPTION
ATTRIBUTS
OPTION_1
VALUE_1
ATTRIBUTS_PREFIX_1
ATTRIBUTS_PRICE_1_HT
OPTION_2
VALUE_2
ATTRIBUTS_PREFIX_2
ATTRIBUTS_PRICE_2_HT
ATTRIBUTS_STOCK_QTY
STOCK_EAN
STOCK_GESCOM
LIVRAISON_HT
PRIX_ACHAT_HT
PRIX_PUBLIC_CONSEILLE_HT
PROMO
PRIX_PROMO_HT
URL
IMG
POIDS
UNITE
PRODUIT
CATEGORIE
MARQUE
COLLECTION
MODEL
PRODUCT_ID
DESIGNATION
DESCRIPTION
ATTRIBUTS
OPTION_1
VALUE_1
ATTRIBUTS_PREFIX_1
ATTRIBUTS_PRICE_1_HT
OPTION_2
VALUE_2
ATTRIBUTS_PREFIX_2
ATTRIBUTS_PRICE_2_HT
ATTRIBUTS_STOCK_QTY
STOCK_EAN
STOCK_GESCOM
LIVRAISON_HT
PRIX_ACHAT_HT
PRIX_PUBLIC_CONSEILLE_HT
PROMO
PRIX_PROMO_HT
URL
IMG
POIDS
UNITE
  

Что я хочу восстановить, так это просто теги первого продукта

 CATALOGUE
PRODUIT
CATEGORIE
MARQUE
COLLECTION
MODEL
PRODUCT_ID
DESIGNATION
DESCRIPTION
ATTRIBUTS
OPTION_1
VALUE_1
ATTRIBUTS_PREFIX_1
ATTRIBUTS_PRICE_1_HT
OPTION_2
VALUE_2
ATTRIBUTS_PREFIX_2
ATTRIBUTS_PRICE_2_HT
ATTRIBUTS_STOCK_QTY
STOCK_EAN
STOCK_GESCOM
LIVRAISON_HT
PRIX_ACHAT_HT
PRIX_PUBLIC_CONSEILLE_HT
PROMO
PRIX_PROMO_HT
URL
IMG
POIDS
UNITE
  

заранее спасибо

Комментарии:

1. Это большой XML-файл? Не могли бы вы вместо этого использовать что-то вроде SimpleXML?

2. да, я использую большие файлы, и часто разные, никогда не похожие на XML-файлы, да, меня не беспокоит использование других методов, пока я нахожу решение

3. ХОРОШО — Пара идей, сохраните список уникальных имен тегов в файле или, когда вы дойдете до конца тега, охватывающего первый продукт, прекратите обработку файла.

4. хорошо, спасибо, я попробую вашу идею