Парсинг XML файла

Тема в разделе "PHP", создана пользователем twister777, 23 фев 2020.

XEvil 4.0 Релиз Состоялся!
Модераторы: latteo
  1. twister777

    twister777 Постоялец

    Регистр.:
    24 авг 2009
    Сообщения:
    56
    Симпатии:
    10
    подскажите как спарсить невалидный XML файл со спец. символами "& <>" ?
    например:
    <?xml version="1.0" encoding="utf-8"?>
    <videos>
    <video id="ph5d13afa144115">
    <title>Text & Test</title>
    </video>
    </videos>
     
  2. Mr.Emm

    Mr.Emm

    Регистр.:
    5 май 2008
    Сообщения:
    153
    Симпатии:
    118
    Как вариант предварительно заменить на html сущности &amp; &lt; &gt;
     
    twister777 нравится это.
  3. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    497
    Симпатии:
    1.169
    Регулярками заменить предварительно теги либо по блеклисту либо во вайтлисту
     
    twister777 нравится это.
  4. mSnus

    mSnus Постоялец

    Регистр.:
    4 дек 2015
    Сообщения:
    78
    Симпатии:
    29
    такой простой XML проще вообще разобрать 1-2 регулярными выражениями, чем пропускать через комбайн XML-парсера со всеми его тонкостями и сложностями
    что-то вроде
    Код:
    $text = '<?xml version="1.0" encoding="utf-8"?>
    <videos>
    <video id="ph5d13afa144115">
    <title>Text & Test</title>
    </video>
    </videos>';
    
    $arrMatches = array();
    preg_match_all("/<title>([^<]+)<\/title>/Ui", $text, $arrMatches);
    
    var_dump($arrMatches);
    
     
    twister777 нравится это.
  5. twister777

    twister777 Постоялец

    Регистр.:
    24 авг 2009
    Сообщения:
    56
    Симпатии:
    10
    во! спасибо.. я понял... какие комбайны XML-парсера бывают ?, так для общего развития интересуюсь
     
  6. komtel01

    komtel01 Писатель

    Регистр.:
    27 мар 2020
    Сообщения:
    4
    Симпатии:
    0
    yoctoXML
     
  7. KOSMOS aka Anarion

    KOSMOS aka Anarion Создатель

    Регистр.:
    15 июл 2007
    Сообщения:
    29
    Симпатии:
    6
    html код надо обрамлять в CDATA
    Тогда будет валидный xml и будет норм парсится

    <![CDATA[<html>
    <head>
    <script/>
    </head>
    <body>
    Your HTML's body
    </body>
    </html>
    ]]>
     
  8. bubi

    bubi Писатель

    Регистр.:
    30 май 2017
    Сообщения:
    2
    Симпатии:
    0
    [QUOTE = "twister777, post: 2938874, member: 161952"] tell me how to parse invalid XML file with special. characters "& <>"?
    eg:
    <? xml version = "1.0" encoding = "utf-8"?>
    <videos>
    <video id = "ph5d13afa144115">
    <title> Text & Test </title>
    </video>
    </videos> [/ QUOTE]

    Ignore var_dump in xml structure

    <?php

    // SINGLE foreach

    $text = '<? xml version = "1.0" encoding = "utf-8"?>
    <videos>
    <video id = "ph5d13afa144115">
    <title>Text & Test</title>
    </video>
    </videos> ';

    $matches = array ();
    // https://rubular.com/r/xmGAEC67kEJSsj
    preg_match_all ('/video.*id="(. *?)">. *?\n.title>(.*\ w)</',$text, $matches, PREG_SET_ORDER);

    foreach ($matches as $items)
    {
    $title = ($items [2]);
    $video_id = ($items [1]);
    }

    $replace_titles = str_replace (
    // REPLACE FROM
    array ("ENTER WHAT YOU NEED TO REPLACE HERE", "ANOTHER TEXT TO REPLACE"),
    // REPLACE TO
    array ("REPLACED TEXT HERE", "REPLACED WITH?"),
    $title
    );

    header ("Access-Control-Allow-Origin: *");
    header ("Content-type: application / json");
    echo ($replace_titles). "\ n"; // << WITH REPLACED
    // echo ($title). "\ n"; // << ORIGINAL
    echo ($video_id). "\ n";
    ?>

    [QUOTE = "twister777, post: 2938874, member: 161952"] tell me how to parse invalid XML file with special. characters "& <>"?
    eg:
    <? xml version = "1.0" encoding = "utf-8"?>
    <videos>
    <video id = "ph5d13afa144115">
    <title> Text & Test </title>
    </video>
    </videos> [/ QUOTE]
     

    Вложения:

    • xml.zip
      Размер файла:
      616 байт
      Просмотров:
      3
    Последнее редактирование модератором: 14 июн 2020
  9. aka_Dayver

    aka_Dayver Создатель

    Регистр.:
    28 янв 2010
    Сообщения:
    14
    Симпатии:
    3
    Хоть и старая но все еще работая и удобная phpQuery
     
    Q_BASIC нравится это.