Есть необходимость привести xml к валидному виду. Получаемый xml содержит несколько проблем:
— в тексте не заменены на html-сущности угловые скобки < >
— теги в произвольном порядке либо uppercase, либо lowercase
Хотелось бы все это привести к однородному виду. Локально на своей машине я запустил tidy с параметрами -i -w -u -xml и у меня получился хороший файл. Теперь мне нужно сделать то же самое на стороне сервера. Я не могу пересобрать php с параметром --with-tidy. И, собственно, вопрос. Есть ли какая-нибудь альтернатива для tidy под php?
ну в реальном времени обрабатывать любым способом такое кол-во строк лучше не стоит, а вот оффлайн-скриптом вполне нормально.
только вопрос — хватит ли у тебя памяти, т.к. насколько я понимаю оно весит около 40М?
Оно весит чуть больше 60М, содержит почти 13000 записей, по 28 используемых полей. И импортируется (при условии, что файл подготовлен заранее в tidy) в течении пары-тройки минут.
Возможно, поможет XMLStarlet — xmlstar.sourceforge.net/. Среди опций:
— Escape/unescape special XML characters in input text
— Format or «beautify» XML documents (as changing indentation, etc)
XMLStarlet is a set of command line utilities (tools) which can be used to transform, query, validate, and edit XML documents and files using simple set of shell commands in similar way it is done for plain text files using UNIX grep, sed, awk, diff, patch, join, etc commands.
Нет, это не то. Если бы я мог использовать command-line утилиты, я бы использовал тот же tidy. Я не могу быть уверенным в том, что на сервере, где это все потом будет хостится, будет не то что нужный набор библиотек, а и вообще linux.
Я не могу быть уверенным в том, что на сервере, где это все потом будет хостится, будет не то что нужный набор библиотек, а и вообще linux
А что так мешает установить при необходимости? Linux как таковой тут не при чём, даже если там будет *BSD или Windows — это не является проблемой.
Не стоит впадать в ступор от наличия зависимостей дальше голого PHP. Tidy не такое уж малопопулярное расширение, чтобы быть где-либо недоступным по умолчанию или не доступным для установки при необходимости.