powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JAXP/DOM; сохранение измененного объекта Document в Java
3 сообщений из 3, страница 1 из 1
JAXP/DOM; сохранение измененного объекта Document в Java
    #33998043
nonsense_name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Друзья, помогайте! с XML первый раз;)

Есть файл XML. В нем надо у одного элемента кое-что добавить в таком виде: было
Код: plaintext
<properties>select..</properties>
стало
Код: plaintext
<properties>select.. where ..</properties>
(то есть надо добавить предикат в запрос:)

Что за фигня такая - создал фабрику, создал билдера, кинул ему на вход файл XML. Получил нужный элемент, изменил элемент - то есть добавил этот предикат. Перечитал на всякий случай - все измененное. То есть объект Document изменен.

Вопрос: как же мне теперь целиком кинуть это измененный объект новый файл с точно такой же структурой (фактически, он лишь на 1 слово больше:)

Не нашел никаких методов в классе Document :(
Что делать? Как мне сохранить измененную XML в новый файл?
Спасибо за любые идеи.
...
Рейтинг: 0 / 0
JAXP/DOM; сохранение измененного объекта Document в Java
    #33998435
cooluser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй врайтеры.

В dom4j это org.dom4j.io.XMLWriter;
...
Рейтинг: 0 / 0
JAXP/DOM; сохранение измененного объекта Document в Java
    #33998953
nonsense_name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. теперь дело уже не во врайтерах.
Может, как-то неверно получаю Document?

Код: plaintext
1.
2.
3.
4.
5.
6.
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(validating);
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setErrorHandler( new  ErrorHandler() {...});
document = builder.parse(fileToProcess);
System.out.println("document.getTextContent()= " + document.getTextContent());

выдает document.getTextContent()= null

после этого делаю:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
NodeList oda_data_sets = document.getElementsByTagName("oda-data-set");
		 for  ( int  i =  0 ; i < oda_data_sets.getLength(); i++) {
			Element oda_data_set = (Element) oda_data_sets.item(i);
			NodeList properties = oda_data_set.getElementsByTagName("property")/* getChildNodes() */;
			 for  ( int  j =  0 ; j < properties.getLength(); j++) {
				Element property = (Element) properties.item(j);
				 if  (property.getAttribute("name").equalsIgnoreCase("queryText")) {
					String SQL = property.getTextContent();
					System.out.println("Был запрос: " + SQL);
					 if  (SQL.toLowerCase().contains("where")) {
						property.setTextContent(SQL + " and author=" + userName);
					}  else  {
						property.setTextContent(SQL + " where author=" + userName);
					}
					System.out.println("Стал запрос: " + property.getTextContent());
				}
			}
		}

получаю

Код: plaintext
1.
Был запрос: select ...where...
Стал запрос: sselect ...where... and author=pupkin

то есть document изменен? или я что-то СИЛЬНО не понимаю. помогайте:)


после этого пытаюсь записать его
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
File file =  new  File(outputFilePath);
		file.createNewFile();
		OutputStream outputStream =  new  FileOutputStream(file);

		XMLWriter xw =  new  XMLWriter(outputStream);
		 if  (document ==  null ) {
			System.out.println("fuck: document==null");
		}  else  {
			xw.write(document);
			xw.flush();
			xw.close();
		}

но, тк document.getTextContent()== null, он ругается

Код: plaintext
1.
2.
3.
4.
java.io.IOException: Invalid object: [#document: null]
	at org.dom4j.io.XMLWriter.write(XMLWriter.java:555)
	at report.ReportUpdater.predicatePersonalization(ReportUpdater.java:144)
	at report.ReportUpdater.main(ReportUpdater.java:43)

где я не прав? почему документ имеет текст контент = null? как его писать?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JAXP/DOM; сохранение измененного объекта Document в Java
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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