powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема SAX - парсинга
7 сообщений из 7, страница 1 из 1
Проблема SAX - парсинга
    #34007898
eUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я - начинающий. Мне нужно выполнить SAX - парсинг входного XML - документа, а затем выполнить трансформацию и в итоге обработанные, отредактированные данные SAX - парсингом выводится в другой XML - файл.
При использовании j2sdk1.4.2_01 выполняется успешно. А вот при использовании jdk1.5.0_06 возникает проблема: русские буквы, которые содержит значение атрибута, заменяются на кодировку UNICODE, а мне нужно на выходе кодировку cp1251.
Что делать? Может какую-то библиотеку найти? И если да, то как к ней обращаться? Помогите, please!
Заранее спасибо!
...
Рейтинг: 0 / 0
Проблема SAX - парсинга
    #34007932
он же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так пишешь?

Код: plaintext
1.
2.
3.
4.
5.
6.
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("windows-1251");

XMLWriter writer=  new  XMLWriter(...., format);
writer.write(.....);
writer.close();
...
Рейтинг: 0 / 0
Проблема SAX - парсинга
    #34007950
eUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, вот код нижеследующий:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
...

       // НАЧАЛО РАБОТЫ С XML ФАЙЛОМ  ДЛЯ ПАРСЕРА
      
SAXParserFactory parserFactory = SAXParserFactory.newInstance();
parserFactory.setValidating(false);
parserFactory.setNamespaceAware(false);
TranslatorScript TranslatorScriptInstance =  new  TranslatorScript();
SAXParser parser = parserFactory.newSAXParser();
parser.getXMLReader().setFeature("http://apache.org/xml/features/allow-java-encodings", true);

 try  {
  parser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
}  catch  (SAXNotRecognizedException x) {
  // exception handling omitted
}

parser.setProperty("http://xml.org/sax/properties/lexical-handler", (LexicalHandler)TranslatorScriptInstance );
parser.parse(uri_IN1, TranslatorScriptInstance);

      // КОНЕЦ РАБОТЫ С XML ФАЙЛОМ  ДЛЯ ПАРСЕРА
      // НАЧАЛО РАБОТЫ С XML ФАЙЛОМ ДЛЯ ТРАНСФОРМАЦИИ

TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, systemValue);

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// если закомментировыать строку, то "чуть - чуть " изменится перекодировка (т.к. производится перекодировка в UTF-8), а мне не нужна перекодировка
//т.к. на входном фале содержимое атрибута - русские буквы
transformer.setOutputProperty(OutputKeys.ENCODING, "Windows-1251");
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	  
...
 
//Создание текста для сценария для транcформации 
SAXSource source =  new  SAXSource( new  InputSource( new  StringReader(ss)));

File newXMLFile =  new  File(uri_OUT1);
FileOutputStream fos =  new  FileOutputStream(newXMLFile);
StreamResult result =  new  StreamResult(fos);
      
transformer.transform(source, result);
...

...
Рейтинг: 0 / 0
Проблема SAX - парсинга
    #34007979
он же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Много всякого говна.
Попробуй сделать проще. Как в моем примере.
Это работает.
...
Рейтинг: 0 / 0
Проблема SAX - парсинга
    #34008044
eUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня нет пакета или библиотеки, содержащего класс XMLWriter. Где его взять? Я так понял, что класс XMLWriter вместо класса Transformer (трансформация)?
...
Рейтинг: 0 / 0
Проблема SAX - парсинга
    #34008111
eUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Библиотека найдена. На выходе - действительно кодировка cp1251. Спасибо!

Но возникает, наверно глупый, вопрос: как с помощью класса XMLwrite вставить элемент, аттрибут, НЕ используя метод startElement? Вроде метод writeOpen(element), write(attribute), writeClose(element). Но как использовать element, attribute (интерфейсы)? Что - то я не разобрался...
...
Рейтинг: 0 / 0
Проблема SAX - парсинга
    #34008353
eUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оказывается DOM4J намного удобнее SAX и, код для работы с DOM4J почти в 3 раза меньше, и удобночитаемее, чем SAX :) Круто! Ну, а как атрибут вставлять, так проще простого! Ну, а если вопрос у кого-то остался насчет атрибута, советую посмотреть простой пример работы Java c XML? - вставка как элементов, так и атрибутов - очень похожи.

Большое спасибо! Тема закрыта.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема SAX - парсинга
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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