![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Entry_N3 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 8.2.2007 Репутация: нет Всего: нет |
есть xml-файл. задано название атрибута, значение которого необходимо изменить. т.е надо открыть xml, записать значение по заданному узлу, сохранить изменения в данном xml
как это реализовать программно на java? особенно запись значения по заданному узлу? ![]() |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Если точно известен путь к узлу, то создай DOM и используй XPath. Если путь варьируется (и при этом есть другие узлы с таким именем, но их менять не надо) или же XML большой, то используй SAX-парсер.
Добавлено @ 00:10 Если через DOM, то запись довольно просто реализуется через методы у Element или Node. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
Entry_N3 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 8.2.2007 Репутация: нет Всего: нет |
есть один узел, значение по которому необходимо проставить (или изменить). использовать надо DOM.
можно пример? |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Можно распарсить документ SAX-ом, а затем сформировать новый.
В принципе там все будет элементарно, все что поступает на вход DefaultHandler, передается как есть на вход SAXTransformerFactory, за исключением того самого аттрибута который надо изменить. Это сообщение отредактировал(а) LSD - 21.3.2007, 14:09 -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Entry_N3 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 8.2.2007 Репутация: нет Всего: нет |
нужно через DOM
Добавлено @ 12:43 LSD, 2 ссылки на одну постоянную страницу |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Entry_N3 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 8.2.2007 Репутация: нет Всего: нет |
постоил DOM модель, и воспользовался методами getElementsByTagName и setNodeValue
|
|||
|
||||
NiТR0 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 28.6.2005 Репутация: нет Всего: нет |
Так изменятся только значения узлов... А как быть с атрибутами???
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Это ты вообще о чем? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
NiТR0 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 28.6.2005 Репутация: нет Всего: нет |
Хотелось узнать , как можно изменить атрибут, а не значение узла (если пользоваться DOM)
Я создаю xml следующей структуры: <log> <messageType attr="Attr 1">Test</messageType> </log>
... далее мне надо изменить значение атрибута "attr", например на "Attr 2", но никак не получается. |
|||
|
||||
nornad |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Ну, вроде бы должно помочь такое:
Писать там, где ты и хочешь изменить. Повторная установка значения перекрывает старое значение. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
||||
|
|||||
3Maestro3 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 6.8.2007 Репутация: нет Всего: нет |
Народ, ХЕЛП! Никак не получается изменить значение тэга в 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 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
В вашем случае изучать основы Java GUI. Сообщение указывает вам на то, что вы установили неверный тип операции при закрытии основного окна. И даже даёт вам подсказку, что именно должно быть установлено. Теперь по хмлу. Либо приведите полноценный пример, чтобы его можно было запустить и посмотреть, где и что у вас не так, либо объясните нормально и доходчиво - что именно делаете, на какой хмл натравливаете свой код, где именно и какая проблема. Если вы работаете через DOM, то он сам следит за корректным открытием-закрытием тегов. Точнее, вы работаете не напрямую с хмл, а с деревом элементов. Закрытие и открытие тегов будет корректно произведено при преобразовании дерева в текст хмла. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
3Maestro3 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 6.8.2007 Репутация: нет Всего: нет |
Уважаемый, зачем так грубо? Мне нужно изменить значения, хранимые в XML. По-моему это вполне доходчиво. Делаться это должно по событию нажатия кнопки (JButtonClicked). Ввод данных производиться с клавиатуры через текстовоге окно(jTextField).
XML содержит:
код:
Как вы поняли надо изменить содержимое properties. Видимо, что бы данные преобразовались в текст XML, следует создать входящий и исходящий потоки. Подскажите как это сделать в конкретном моём случае!! |
||||
|
|||||
nornad |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
3Maestro3, для кода есть специальные теги и даже кнопочка в редакторе для упрощения (чтобы теги руками не вводить).
Грубить вам я не имел намерения. Я лишь указывал на достаточно очевидный ответ.
По вашим прошлым объяснениям я понял, что вы хотели изменить значение не атрибута, а самого узла. Вот ответ на оба вопроса (как изменить значение атрибута и как перевести хмл-дерево в строку):
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |