Неформатированный разбор XML с использованием PHP - PullRequest
1 голос
/ 16 января 2011

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

Можно ли как-нибудь открыть xml-файл в PHP, preg_replace теги с «чем-то» и показать вывод.

Я попытался просто открыть php-файл и прочитать содержимое ион показывает вывод, но таких разрывов строк нет.

Есть ли способ прочитать xml и изменить теги на лету, а затем просто прочитать файл, чтобы показать содержимое?

Пример содержимого xml - так что в основном информация находится в собственном тегено не имеет родительского тега типа "".Любая идея, как я могу просто отобразить всю эту информацию?я хочу отобразить

xxxxxx вгггггг в[16:38] mr.xyz:hello[16:38] mr.abc:heyхххххх выход

<?xml version="1.0" encoding="UTF-8"?>
<in>---xxxxxx in---</in>
<in>---yyyyyy in---</in>
<time>[16:38]</time> <user>mr.xyz</user><separator>:</separator> </content>hello</content>
<time>[16:38]</time> <user>mr.abc</user><separator>:</separator> </content>hey</content>
<out>---xxxxxx out--</out>

Ответы [ 3 ]

0 голосов
/ 16 января 2011

Вы можете сделать что-то вроде этого - и затем установить заголовки типа контента в XML, используя функцию php header( 'Content-type: text/xml' );, и браузер будет использовать его как документ XML.

function replaceTag( $tag, $new, $content )
{
    if ( !preg_match( '/\<'.$tag.'(.*?)\>(.*?)\<\/'.$tag.'\>/i', $content ) )
    {
         return FALSE;
    }
    return preg_replace( '/\<'.$tag.'(.*?)\>(.*?)\<\/'.$tag.'\>/i', "<{$new}$1>$2</{$new}>", $content );
}

echo replaceTag( 'in', 'newIn', '<in>123</in>' ); // Should output <newIn>123</newIn>

EDIT: Я мог неправильно истолковать вопрос. Если вы хотите что-то сделать с данными вывода XML, я бы сослался на методы simplexml в PHP. Более подробную информацию о них можно найти здесь; http://php.net/simplexml

0 голосов
/ 16 января 2011

не используйте регулярные выражения для разбора XML.

либо использовать PHPs классы SimpleXML,

http://us3.php.net/manual/en/simplexml.examples-basic.php

и если xml сформирован некорректно или вам требуется более продвинутая функциональность, используйте классы PHP DOM,

http://www.php.net/manual/en/book.dom.php

любой из них может анализировать xml, вносить изменения и / или выводить его в хорошо отформатированный файл.

0 голосов
/ 16 января 2011

Вы можете использовать jQuery-подобную библиотеку для получения значений. Вот один http://code.google.com/p/phpquery/wiki/Basics

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...