Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > XML - изменение значения |
Автор: Entry_N3 20.3.2007, 23:30 |
есть xml-файл. задано название атрибута, значение которого необходимо изменить. т.е надо открыть xml, записать значение по заданному узлу, сохранить изменения в данном xml как это реализовать программно на java? особенно запись значения по заданному узлу? ![]() |
Автор: nornad 21.3.2007, 00:09 |
Если точно известен путь к узлу, то создай DOM и используй XPath. Если путь варьируется (и при этом есть другие узлы с таким именем, но их менять не надо) или же XML большой, то используй SAX-парсер. Добавлено @ 00:10 Если через DOM, то запись довольно просто реализуется через методы у Element или Node. |
Автор: Entry_N3 21.3.2007, 11:49 |
есть один узел, значение по которому необходимо проставить (или изменить). использовать надо DOM. можно пример? |
Автор: LSD 21.3.2007, 12:14 |
Можно http://vingrad.ru/JAVA-JAV-003029, а затем http://vingrad.ru/JAVA-JAV-003059. В принципе там все будет элементарно, все что поступает на вход DefaultHandler, передается как есть на вход SAXTransformerFactory, за исключением того самого аттрибута который надо изменить. |
Автор: Entry_N3 21.3.2007, 12:42 |
нужно через DOM Добавлено @ 12:43 LSD, 2 ссылки на одну постоянную страницу |
Автор: LSD 21.3.2007, 14:11 |
Исправил. |
Автор: Entry_N3 23.3.2007, 22:34 |
постоил DOM модель, и воспользовался методами getElementsByTagName и setNodeValue |
Автор: NiТR0 30.1.2008, 17:14 |
Так изменятся только значения узлов... А как быть с атрибутами??? |
Автор: LSD 30.1.2008, 17:46 |
Это ты вообще о чем? |
Автор: NiТR0 30.1.2008, 18:15 | ||
Хотелось узнать , как можно изменить атрибут, а не значение узла (если пользоваться DOM) Я создаю xml следующей структуры: <log> <messageType attr="Attr 1">Test</messageType> </log>
... далее мне надо изменить значение атрибута "attr", например на "Attr 2", но никак не получается. |
Автор: 3Maestro3 10.2.2008, 14:29 |
Народ, ХЕЛП! Никак не получается изменить значение тэга в XML-файле. Через методы Element или Node пробовал, а именно: if (childElement.getTagName().equals("size")) // где size это тот тэг, значение которого надо изменить { String s = this.jTextField3.getText(); childElement.setAttribute("name",s); System.out.println(childElement); String size = this.jTextField3.getText(); textNode.setTextContent(size); Не помогло. Причем ошибки невыдаёт ни-ка-кой. может неправильно XML закрывается?.. System.out.println(childElement); кстати выдаёт [ size: null] а при запуске появляется сообщение: java.lang.IllegalArgumentException: defaultCloseOperation must be one of: DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, or DISPOSE_ON_CLOSE господа, что делать, как говорил Чернышевский? |
Автор: nornad 10.2.2008, 15:36 |
В вашем случае изучать основы Java GUI. Сообщение указывает вам на то, что вы установили неверный тип операции при закрытии основного окна. И даже даёт вам подсказку, что именно должно быть установлено. Теперь по хмлу. Либо приведите полноценный пример, чтобы его можно было запустить и посмотреть, где и что у вас не так, либо объясните нормально и доходчиво - что именно делаете, на какой хмл натравливаете свой код, где именно и какая проблема. Если вы работаете через DOM, то он сам следит за корректным открытием-закрытием тегов. Точнее, вы работаете не напрямую с хмл, а с деревом элементов. Закрытие и открытие тегов будет корректно произведено при преобразовании дерева в текст хмла. |
Автор: 3Maestro3 11.2.2008, 20:50 | ||||
Уважаемый, зачем так грубо? Мне нужно изменить значения, хранимые в XML. По-моему это вполне доходчиво. Делаться это должно по событию нажатия кнопки (JButtonClicked). Ввод данных производиться с клавиатуры через текстовоге окно(jTextField). XML содержит:
код:
Как вы поняли надо изменить содержимое properties. Видимо, что бы данные преобразовались в текст XML, следует создать входящий и исходящий потоки. Подскажите как это сделать в конкретном моём случае!! |
Автор: nornad 12.2.2008, 02:23 | ||||
3Maestro3, для кода есть специальные теги и даже кнопочка в редакторе для упрощения (чтобы теги руками не вводить). Грубить вам я не имел намерения. Я лишь указывал на достаточно очевидный ответ.
По вашим прошлым объяснениям я понял, что вы хотели изменить значение не атрибута, а самого узла. Вот ответ на оба вопроса (как изменить значение атрибута и как перевести хмл-дерево в строку):
|