powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Поменять местами 2 строки xml документа
13 сообщений из 13, страница 1 из 1
Поменять местами 2 строки xml документа
    #34413156
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть xml документ xmlDoc, содержащий строки - элементы с тегом RowTag:
xmlRows=xmlDoc.getElementsByTagName("RowTag");
мне нужно поменять местами i-ю и k-ю строки.
следующие варианты не работают:
Код: plaintext
1.
2.
3.
// 1  вариант
c=xmlRows[i];
xmlRows[i]=xmlRows[k];
xmlRows[k]=c;
Код: plaintext
1.
2.
3.
4.
// 2  вариант
c=xmlRows[i];
d=xmlRows[k];
xmlDoc.replaceChild(c,xmlRows[k]);
xmlDoc.replaceChild(d,xmlRows[i]);
Код: plaintext
1.
2.
3.
4.
//  3  вариант
c=xmlRows[i];
d=xmlRows[k];
xmlRows[k].replaceNode(c);
xmlRows[i].replaceNode(d);
Подскажите как выкручиваться.
...
Рейтинг: 0 / 0
Поменять местами 2 строки xml документа
    #34413244
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так если два раза менять то всё должно вернуться как было?=)
...
Рейтинг: 0 / 0
Поменять местами 2 строки xml документа
    #34413289
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял ваш вопрос.
Приведённые тексты не пытаются делать обмен местами дважды.
...
Рейтинг: 0 / 0
Поменять местами 2 строки xml документа
    #34413304
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
после выполнения вообще ничего не меняется?
возможно надо использовать cloneNode
...
Рейтинг: 0 / 0
Поменять местами 2 строки xml документа
    #34413421
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал клонировать, клонирование выполняется, но последующий replace в обоих вариантах не выполняется - прекращается выполнение и дальше не идёт. При этом ни firefox ни ie7 сообщений об ошибках не выдают.
Код: plaintext
1.
2.
3.
4.
5.
// variant  1 
			c=me.xmlRows[i].cloneNode(true); 
			d=me.xmlRows[k].cloneNode(true);
			me.xmlRows[i].replaceNode(d);
			me.xmlRows[k].replaceNode(c);
Код: plaintext
1.
2.
3.
4.
5.
// variant  2 
			c=me.xmlRows[i].cloneNode(true); 
			d=me.xmlRows[k].cloneNode(true);
			xmlDoc.replaceChild(c,me.xmlRows[k]);
			xmlDoc.replaceChild(d,me.xmlRows[i]);
...
Рейтинг: 0 / 0
Поменять местами 2 строки xml документа
    #34413434
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправил ошибку во 2 варианте:
Код: plaintext
1.
2.
3.
4.
// variant  2 
			c=me.xmlRows[i].cloneNode(true); 
			d=me.xmlRows[k].cloneNode(true);
			me.xmlDoc.replaceChild(c,me.xmlRows[k]);
			me.xmlDoc.replaceChild(d,me.xmlRows[i]);
ничего не изменилось
...
Рейтинг: 0 / 0
Поменять местами 2 строки xml документа
    #34413835
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробовал:
try{}catch(e){alert(e);} показал Node was not found
и действительно xmlDoc - не parent xmlRows
его parent - xmlDoc.firstChild , главный node
с ним работает
...
Рейтинг: 0 / 0
Поменять местами 2 строки xml документа
    #34413967
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, попробую. Но это несколько неожиданно.
Вообще- то речь шла о сортировке xmlRows и я уже объехал это на козе, сортируя перестановку вместо собственно xmlRows. Но есть ещё 2 точки где это понадобится.
...
Рейтинг: 0 / 0
Поменять местами 2 строки xml документа
    #34421450
alexxx21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а не проще сортировать через <xsl:sort> ?
...
Рейтинг: 0 / 0
Поменять местами 2 строки xml документа
    #34423315
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное проще, но я не умею - получаю сообщение "неверный аргумент ф-ии sort". Это во первых.
А во вторых я при этом не могу получить информацию о том на какую позицию встала строка, которая была текущей.
Мне бы примерчик, в котором функции sort передаётся ф-я сравнения. Ещё 3 дня у меня не будет сносного доступа к интернет - не могу сходить на w3. А сюда могу.
...
Рейтинг: 0 / 0
Поменять местами 2 строки xml документа
    #34423330
alexxx21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Брат по несчастью, я тоже лимит на этот месяц уже выбрал :)
Про <xsl:sort> читай на MSDN или http://]http://www.w3schools.com/

А во вторых я при этом не могу получить информацию о том на какую позицию встала строка, которая была текущей.
Добавь строкам уникальный идентификатор, например через аттрибут <row id="...">, запомни этот идентификатор для текущей строки в переменную скриптом на JS, соотв. после сортировки получи эту строку по запомненной переменной через xpath, xmlDoc.selectSingleNode('row/@id=...')
...
Рейтинг: 0 / 0
Поменять местами 2 строки xml документа
    #34423337
alexxx21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне бы примерчик, в котором функции sort передаётся ф-я сравнения.
Не понял что такое ф-я сравнения , вот синтаксис из MSDN:

Specifies sort criteria for node lists selected by <xsl:for-each> or <xsl:apply-templates>.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<xsl:sort
  select = string-expression 
  lang = { nmtoken }
  data-type = { "text" | "number" | QName }
  order = { "ascending" | "descending" }
  case-order = { "upper-first" | "lower-first" }
  /> 
...
Рейтинг: 0 / 0
Поменять местами 2 строки xml документа
    #34424713
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного не то.
Меня интересовал метод sort javascript - объекта Array. Что касается первого замечания, то это давно мной используется.
Но всё равно спасибо.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Поменять местами 2 строки xml документа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]