![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: нет Всего: 78 |
привет.
есть большой (или не очень) xml файл. задача: выбрать из него некоторые элементы, слегка отформатировать их и вернуть. но таких задач, предположим много (все немного различаются). чем лучше воспользоваться? средствами DOM или написать XSL-трансформаторы и подгружать их скриптом к xml файлу? на мой взгяд, второе прощё. что скажете? |
|||
|
||||
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: нет Всего: 6 |
Alx,
Смотря в каких условиях требуеться форматирование элиментов... |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: нет Всего: 78 |
BuShaRt,
можно поподробнее? |
|||
|
||||
| WolfON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: нет Всего: 8 |
Тем что быстрее будет работать в данном случае )
Узнать, что быстрее заработает можно только на собственном опыте, хотя по моему парсер DOM будет побыстрее. А можно ведь и сделать все регулярками, если не очень сложный xml |
|||
|
||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 5 Всего: 42 |
Добавлю еще пару вариантов.
1) Можно использовать заранее подготовленный класс (по Интернету таких полно валяется) для преобразования xml в массив, изменить значение элементов массива и обратным преобразованием записать xml 2) В случае, если не предвидится изменений структуры xml, а меняются только значения элементов, или изменения структуры незначительны, можно использовать SimpleXML. Если преобразования соответвуют этому типу, считаю вариант предпочтительным. Он позволяет работать с xml наиболее лаконичным и интиутивным способом. Выбор зависит от задачи. Например, при существенных изменениях структуры (предельный случай: на выходе должен получиться не XML вообще), удобнее XSL преобразования. Вариант с DOM, по моему опыту, наиболее громоздкий, и наименее обобщаемый: при самом незначительном изменении задачи приходится писать другую функцию. -------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: нет Всего: 78 |
Golda,
мне simpleXML вообще не нравится.. неужобная работа с NS, аттрибутами.. но все равно, спасибо |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: нет Всего: 78 |
и как с кириллицей SimpleXML работать я тоже не понял..
|
|||
|
||||
| Golda |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 5 Всего: 42 |
Alx, SimpleXML подходит, конечно, не для всех задач. Если тебуются серьезные изменения структуры, он не подходит. Но как раз в ситуации
это обычно наиболее удобный вариант. Не могу ничего сказать по поводу NS, пока обходилась без них. Но работу с аттрибутами я неудобной назвать не могу. Разве это не наиболее лаконичный вариант:
А по поводу кириллицы, работайте в UTF-8. При любом методе работы с XML меньше проблем, когда работаешь с Unicode. Хотя я согласна, что DOM позволяет программисту что-то рассказать о своей кодировке, все равно, если это не UTF-8, c национальными алфавитами жди проблем Это сообщение отредактировал(а) Golda - 19.5.2007, 23:38 -------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
||||||
|
|||||||
| Alx |
|
||||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: нет Всего: 78 |
Golda,
Спасибо.. а как мне русские слова то вывести?
возвращает ошибки:
|
||||
|
|||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 5 Всего: 42 |
Можете использовать iconv() (только убедитесь, что у Вас установлен этот extention), а еще проще, сохраните свой скрипт (файл) в UTF-8
-------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: нет Всего: 78 |
спасибо, но тогда при присутствии строки header('Content-Type:application/xml'); возникает такая ошибка:
при кодировке ANSI - её нет.. Добавлено @ 13:41 Denwer+PHP5 Это сообщение отредактировал(а) Alx - 22.5.2007, 13:41 |
|||
|
||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 5 Всего: 42 |
Эта ошибка не имеет отношения к XML. Просто у Вас в файле до <?php остался какой-то пробел, табуляция или перевод строки. Поэтому, когда Вы пытаетесь вызывать посылать заголовок (неважно какой) с помощью header(), он ругается, что вывод уже начался и больше заголовки послать не получится. Проверьте, что до открывающего тега <?php ничего нет
Упс, не дочитала, что в кодировке ANSI этой проблемы не возникает. Очень странно. С таким я не сталкивалась. Проверьте на всякий случай, что <?php весь набран латиницей. Это сообщение отредактировал(а) Golda - 22.5.2007, 14:42 -------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 5 Всего: 42 |
Alx, я нашла источник этой пролемы. Она появляется, если используется скрипт сохраняется в стандартный UTF-8, который использует byte order mark (BOM) в начале файла (подробнее о нем можете прочитать здесь http://unicode.org/faq/utf_bom.html). Эти лишние байты и воспринимаются интерпритатором php как начало вывода. Нужно сохранять в UTF-8 без BOM.
PS. Спасибо, что навели меня на интересную информацию. Я сама обычно использую iconv и на подобный момент не натыкалась -------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: нет Всего: 78 |
ох, а как это? на сайте я что-то не нашел.. до того я сохранял в Блокноте (там только ANSI, Unicode, Unicode Big Endian и UTF-8) |
|||
|
||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 5 Всего: 42 |
Ну, в Notepad не очень удобно работать. Без подсветки, подсказок, автодополонения... Мне сложно посоветовать что-либо под Windows. На работе есть возможность использовать ZendStudio под Linux. Знакомые, которые работают с Windows, советуют Notepad++. Говорят, его можно удобно настроить под свои нужды. Во всяком случае, я проверила, что там можно выбрать кодировку UTF-8 без BOM (проверяла в версии 4.1.2). Тем более, что он бесплатный. Или поищите любой другой редактор, поддерживающий такую возможность
Это сообщение отредактировал(а) Golda - 23.5.2007, 17:03 -------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
![]()
|
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: X технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |