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

twister777

Постоялец
Регистрация
24 Авг 2009
Сообщения
56
Реакции
10
подскажите как спарсить невалидный XML файл со спец. символами "& <>" ?
например:
<?xml version="1.0" encoding="utf-8"?>
<videos>
<video id="ph5d13afa144115">
<title>Text & Test</title>
</video>
</videos>
 
Как вариант предварительно заменить на html сущности &amp; &lt; &gt;
 
Регулярками заменить предварительно теги либо по блеклисту либо во вайтлисту
 
такой простой 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);
 
такой простой XML проще вообще разобрать 1-2 регулярными выражениями, чем пропускать через комбайн XML-парсера со всеми его тонкостями и сложностями
что-то вроде
во! спасибо.. я понял... какие комбайны XML-парсера бывают ?, так для общего развития интересуюсь
 
html код надо обрамлять в CDATA
Тогда будет валидный xml и будет норм парсится

<![CDATA[<html>
<head>
<script/>
</head>
<body>
Your HTML's body
</body>
</html>
]]>
 
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>

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 ();
// Для просмотра ссылки Войди или Зарегистрируйся
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";
?>

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>
 

Вложения

  • xml.zip
    616 байт · Просмотры: 3
Последнее редактирование модератором:
подскажите как спарсить невалидный XML файл со спец. символами "& <>" ?
например:
<?xml version="1.0" encoding="utf-8"?>
<videos>
<video id="ph5d13afa144115">
<title>Text & Test</title>
</video>
</videos>

Функция addslashes -- Экранирует спецсимволы в строке. заюзай функцию и будет тебе счастье.
Полученную строку можешь парсить так как хочешь, PHP ругаться на спец символы не будет. Можешь розбирать любой XML даже с " ' ?> <?php и т д.

Без экранирования спец символов - тебя PHP пошлет очееень далеко и на долго. :)
Ни в одну переменную не сможешь запихнуть без экранирования свой XML со спец символами в переменную , не важно каким образом полученную.

Пример для понимания принципа
PHP:
<?php
$str = "Is your name O'reilly?";

// выводит: Is your name O\'reilly?
echo addslashes($str);
?>
 
Последнее редактирование:
Назад
Сверху