Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Установка атрибута, setAttribute не работает 
:(
    Опции темы
Сириус
Дата 26.5.2006, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 26.11.2005

Репутация: нет
Всего: нет



Код

function save_win_pos(obj,column,position)
{

    var genDoc = loadXML("genXml", "general.xml");
    genDocRoot = genDoc.documentElement;
    genDocRoot.childNodes.item(obj.n).setAttribute("col",column+1);
    genDocRoot.childNodes.item(obj.n).setAttribute("pos",position+1);
}


Вот простая функция, которая устанавливает значения атрибутов col и pos. ТОчнее должна была устанавливать..хотя даже ошибки не выдается, просто ничего не устанавливается и все дела.

Вы можете сказать где я ошибся ? или подсказать какой-нибудь другой способ установки атрибутов в XML ? 
PM MAIL   Вверх
Beard
Дата 26.5.2006, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.7.2005
Где: Санкт-Петербург

Репутация: 7
Всего: 9



А что это за функция:
Код

loadXML("genXml", "general.xml");

?
Где про нее можно почитать?  
PM MAIL   Вверх
Сириус
Дата 26.5.2006, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 26.11.2005

Репутация: нет
Всего: нет



Код

function loadXML(id, fileName) {

    var xmlDoc = document.getElementById(id);
    if(xmlDoc.load(fileName) == false) {
        alert( "XML Parse error" );
        return null;
    }
    if(xmlDoc.parseError.errorCode != 0 || !xmlDoc.documentElement) {
        alert( "XML Parse error" );
        return null;
    }

//    var root =  xmlDoc.documentElement;
    return xmlDoc;
}



 
PM MAIL   Вверх
Сириус
Дата 27.5.2006, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 26.11.2005

Репутация: нет
Всего: нет



А вопрос между прочим очень рядовой...хотя вроде на него ответа никто не знает, даже специалисты. Смешно наверное..по моим наблюдениям set функция ничего в документе xml не записывает, она просто меняет значение атрибута в течение данного сеанса, поэтому после перезагрузки (если функции set нет снова) атрибуты старые...никаких записей в xml не происходит, словом липа и бред.
 
PM MAIL   Вверх
Beard
Дата 27.5.2006, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.7.2005
Где: Санкт-Петербург

Репутация: 7
Всего: 9



Вобщем примерно так:
Код

<HTML>
<HEAD>
  <TITLE>sample</TITLE>
  <script language = "javascript">

function loadXML(url) {
    var result = new ActiveXObject("Microsoft.XMLDOM");
    result.async = false;
    result.load(url);
    if (result.parseError.errorCode != 0) {
        reportParseError(result.parseError);
        result = null;
    }
    return result;
}

function setAttributes(fileName, n, col, pos, outFileName) {
    var srcTree = loadXML(fileName);
    if (srcTree != null) {
        var root = srcTree.documentElement;
        alert("Before:\n" + viewNode(root, ""));
        var elem = root.childNodes.item(n);
        elem.setAttribute("col", col + 1);
        elem.setAttribute("pos", pos + 1);
        alert("After:\n" + viewNode(root, ""));
        //get element with atribute:
        //alert(root.selectSingleNode("//element[@pos='" + (pos + 1) + "']").text + " = " + elem.text);
        srcTree.save(outFileName); //TODO: check permissions
    }
}

function viewNode(node, space) {
    var result = space;
    if (node.nodeType == 3) {
        result += node.text;
    } else {
        var childNodes = node.childNodes;
        result += "<" + node.nodeName;
        var attributes = node.attributes;
        for (var i = 0; i < attributes.length; i++) {
            result += " " + attributes[i].name + "=\"" + attributes[i].text + "\"";
        }
        if (childNodes.length == 0) {
            result += "/>";
        } else {
            result += ">\n";
            for (var i = 0; i < childNodes.length; i++) {
                result += space + viewNode(childNodes.item(i), space + "   ") + "\n";
            }
            result += space + "</" + node.nodeName + ">";
        }
    }
    return result;
}

function reportParseError(error) {
    var error_str = "Error on load document '" + error.url + "'" +
                    "\n" + error.reason;
    if (error.line > 0)
        error_str += "\n" + "Line " + error.line + ", Char " + error.linepos +
                     "\n" + error.srcText;
    alert(error_str);
}
</SCRIPT>
</HEAD>

<BODY>
  <INPUT TYPE="button" VALUE="Go-go-go!" onClick="setAttributes('test.xml', 3, 7, 10, 'test.xml')"/>
</BODY>

</HTML>

точно будет работать (под IE по крайней мере smile)
И на прошлую твою тему - в комментах показан способ, как получить елемент по значению атрибута
без перебора в цикле:
Код

root.selectSingleNode("//element[@pos='attribute_value']")


Добавлено @ 21:18 
Цитата

по моим наблюдениям set функция ничего в документе xml не записывает

Естественно файл не изменится - когда мы работаем с xml-документом таким образом, создается его DOM-представление (в памяти) - с ним мы и работаем. Если потом сделать save, вот тогда и изменения окажутся в файловой системе  

Это сообщение отредактировал(а) Beard - 28.5.2006, 00:20
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0625 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.