Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Изменение содержимого XML файла (https://javascript.ru/forum/jquery/22746-izmenenie-soderzhimogo-xml-fajjla.html)

Visvitalis 31.10.2011 19:30

Изменение содержимого XML файла
 
Есть например xml файл в котором содержится поля адресной книги (фио, улица, телефон и т.д.) , как можно обработать его чтобы остались только люди проживающие по конретной улице?

trikadin 31.10.2011 21:28

Пройтись по списку и удалить тех, которые не живут на нужной улице, это же очевидно.

Visvitalis 31.10.2011 21:53

Цитата:

Сообщение от trikadin (Сообщение 133801)
Пройтись по списку и удалить тех, которые не живут на нужной улице, это же очевидно.

мне не очевидно, было бы так, то не писал бы здесь, обьясните тем кто в танке на примере.

trikadin 31.10.2011 22:04

Ок, пример.

arr=["Красная, 12. Петров Сергей Сергеевич", 
"Зелёная, 3. Иванов Семён Семёнович",
"Красная, 4. Дмитриев Корней Корнеевич"]

arr2=[];
for (var i=0; i!= arr.length; ++i) {
 if (arr[i].indexOf("Красная")!=-1) 
  arr2.push(arr[i]);
};

alert(arr2.join("\n"));

Magneto 31.10.2011 22:05

Цитата:

Сообщение от trikadin
Ок, пример.

У автора XML файл, а не массив данных.

ksa 31.10.2011 22:07

trikadin, у автора не массив... :) У него
Цитата:

Сообщение от Visvitalis
Есть например xml файл

Цитата:

Сообщение от Visvitalis
обьясните тем кто в танке на примере

Ты для начала покажи тот xml файл... :D не весь конечно... А то ты ща буханёшь! :D

trikadin 31.10.2011 22:26

Цитата:

Сообщение от ksa
автора не массив

Я заметил, спасибо. Просто он о нём вообще ничего не сказал. Поэтому я сделал пример на массиве.

Visvitalis 01.11.2011 00:39

Цитата:

Сообщение от ksa (Сообщение 133828)
trikadin, у автора не массив... :) У него


Ты для начала покажи тот xml файл... :D не весь конечно... А то ты ща буханёшь! :D

Да можно хотябы на примере того же массива , который был показан выше.
Например в таком виде :
<adr>
<ul>Красная</ul>
<dom> 12</dom>
<fio>Петров Сергей Сергеевич</fio>
<adr>
<adr>
<ul>Зелёная</ul>
<dom> 12</dom>
<fio>Иванов Семён Семёнович</fio>
<adr>
<adr>
<ul>Красная</ul>
<dom> 11</dom>
<fio>Дмитриев Корней Корнеевич</fio>
<adr>
<adr>

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

trikadin 01.11.2011 00:57

Прекрасный пример. Вы будете делать это javascript'ом, правильно понял? И получать будете ajax'ом?

Magneto 01.11.2011 02:19

Visvitalis если у тебя есть возможность самому генерировате эти XML файлы и ты будеш их спользовать в только в браузере разбирая их яваскриптом то следует хранить эти данные в JSON.

Visvitalis 01.11.2011 02:21

Цитата:

Сообщение от trikadin (Сообщение 133882)
Прекрасный пример. Вы будете делать это javascript'ом, правильно понял? И получать будете ajax'ом?

я ожидал советов как раз , как более или менее кашерно можно было бы сделать иил хотябы подсказать где копать надо

trikadin 01.11.2011 02:33

Один совет дал Magneto. Вы хотите менять именно xml, именно javascript'ом, и именно на клиенте?

Через ajax получаете нужный файл. Дальше работаете с методом data.responseXML (где data - это ответ сервера) как с обычным dom-деревом - с помощью метода getElementsByTagName. Копать, соответственно, нужно в сторону ajax. Советую найти и прочитать Джона Резига - "Профессиональные приёмы программирования" - главу про ajax. Потом отправляете данные обратно серверу, и он их записывает в файл.

Visvitalis 01.11.2011 02:40

Цитата:

Сообщение от trikadin (Сообщение 133910)
Один совет дал Magneto. Вы хотите менять именно xml, именно javascript'ом, и именно на клиенте?

Через ajax получаете нужный файл. Дальше работаете с методом data.responseXML (где data - это ответ сервера) как с обычным dom-деревом - с помощью метода getElementsByTagName. Копать, соответственно, нужно в сторону ajax. Советую найти и прочитать Джона Резига - "Профессиональные приёмы программирования" - главу про ajax. Потом отправляете данные обратно серверу, и он их записывает в файл.

можно сделать именно локалоьно?

trikadin 01.11.2011 03:02

Что вы понимаете под "локально"?

Visvitalis 01.11.2011 17:37

Цитата:

Сообщение от trikadin (Сообщение 133913)
Что вы понимаете под "локально"?

т.е. на локальной машине, если есть конечно такая возможность

Magneto 01.11.2011 17:45

Подобное уже спрашивали - ссылка.

Visvitalis 02.11.2011 13:25

Цитата:

Сообщение от Magneto (Сообщение 133991)
Подобное уже спрашивали - ссылка.

Подобное , но не совсем то что мне надо. У меня вопрос заключался в том чтобы удалить в xml файле не нужные адреса , или записать по выбранной улице в отдельный xml файл, но сделать на локальной машине

trikadin 02.11.2011 15:53

Откройте файл блокнотом и удалите ненужные адреса.

Если вас интересует, можно ли с помощью js открыть файл на компьютере пользователя, редактировать его и сохранить изменения - нет, нельзя. Вы можете загрузить файл на сервер, там сделать всё, что нужно, а после отдать пользователю ссылку на скачивание отредактированного файла.

Visvitalis 02.11.2011 17:25

Цитата:

Сообщение от trikadin (Сообщение 134125)
Откройте файл блокнотом и удалите ненужные адреса.

Если вас интересует, можно ли с помощью js открыть файл на компьютере пользователя, редактировать его и сохранить изменения - нет, нельзя. Вы можете загрузить файл на сервер, там сделать всё, что нужно, а после отдать пользователю ссылку на скачивание отредактированного файла.

ну 16тыс.адресов конечно может комуто интересно будет ручками ковырять ... ))

меня интересует с помощью JS отредактировать xml файл c определеными критериями.

Visvitalis 02.11.2011 19:35

т.е. редактировать xml файл "физически". открыть , на странице будет только к примеру поле улица, при выборе которой будет в xml оставленны узлы только при наличии этой улицы и сохранало в файл.
p.s. прошу сильно не пинать т.к. пытаюсь разобраться с js и ищу помощи на этом форуме. и извеняюсь что запостил именно в jQuery, возможно есть смысл перенести в другой раздел.

ksa 02.11.2011 19:51

Цитата:

Сообщение от Visvitalis
16тыс.адресов

Вообще-то для таких объёмов существуют БД и серверные языки... :) Т.ч. не клиентское это дело...

Visvitalis 02.11.2011 19:58

Цитата:

Сообщение от ksa (Сообщение 134156)
Вообще-то для таких объёмов существуют БД и серверные языки... :) Т.ч. не клиентское это дело...

Просто инфа именно в xml. Если я правильно понял то на js проблематично делать запись в файл?

trikadin 02.11.2011 20:24

Да. Если у вас есть информация объёмом в 16 тысяч xml-файлов, и вам нужно все эти файлы отредактировать, то посмотрите в сторону php. У него есть средства для работы с xml-файлами, и он позволяет их считывать и записывать. Javascript, который вы имеете в виду (браузерный), этого делать не позволяет.

ksa 02.11.2011 20:28

Цитата:

Сообщение от Visvitalis
Просто инфа именно в xml

Она запросто закачается в любую БД...

Magneto 02.11.2011 20:36

Если нужно всего один раз и не хочется заморачиваться, то можно и одним яваскриптом обойтись, смотреть в сторону HTA.

ksa 02.11.2011 20:57

Цитата:

Сообщение от Magneto
Если нужно всего один раз

Т.е. написать на серверном скрипте, который может изначально работать с файлами и данными, сложнее? :D Или дольше?


Часовой пояс GMT +3, время: 02:36.