powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / XML-TO-XML
13 сообщений из 13, страница 1 из 1
XML-TO-XML
    #34255212
drews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем.
я сравнительно не давно разбираюсь c xml
посоветуйте пожалуйста, какую лучше (проще) технологию(jdom,jaxp,jaxb,sax,dom) применить для реализации такой задачи:
есть один xml c определенными данными и структурой и динамическим содержанием
необходимо часть инфы из него выдернуть и построить другой xml, с совершенно другой структурой, с добавлением элементов, атрибутов и т.д.

буду очень благодарен
...
Рейтинг: 0 / 0
XML-TO-XML
    #34255671
^ozzy^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скорее всего оптимально будет использовать реализацию DOM и для парсинга и для построения нового XML-документа (хотя разобрать можно, используя реализацию SAX, но тогда данные нужно будет дополнительно сохранить перед построением нового XML-документа).
...
Рейтинг: 0 / 0
XML-TO-XML
    #34255694
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XSLT
...
Рейтинг: 0 / 0
XML-TO-XML
    #34255702
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для преобразования одного XML в другой, нужно использовать XSL. Для работы в Java программе с XML документами, XSL преобразованиями и т.д. лучше использовать JAXP.
...
Рейтинг: 0 / 0
XML-TO-XML
    #34255708
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XSLT как вариант. Чем пользоваться - дело десятое, для стандартизации можно JAXP .
...
Рейтинг: 0 / 0
XML-TO-XML
    #34255819
drews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
когда вы говорите XSLT, следует ли читать, что здесь используются также возможности dom и sax?
...
Рейтинг: 0 / 0
XML-TO-XML
    #34255842
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drewsкогда вы говорите XSLT, следует ли читать, что здесь используются также возможности dom и sax?
Нет. XSLT - преобразование XML с использованием специального XSL-файла. Преобразовывать можно разными путями, из Java, например, так:
Код: plaintext
1.
2.
3.
4.
Source xmlDOMSource =  new  StreamSource( new  File(sourceXmlFileName));
Source xslDOMSource =  new  StreamSource( new  File(xslFileName));
Transformer tr = TransformerFactory.newInstance().newTransformer(xslDOMSource);
tr.transform(xmlDOMSource,  new  StreamResult( new  File(destXmlFileName)));
...
Рейтинг: 0 / 0
XML-TO-XML
    #34255955
drews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я как-то почитав xsl, отказался от этого пути. возможно я не прав, но такого рода преобразования показались мне излишне сложными.
вот что я имею ввиду.

1. в исходном xml один элемент имеет много атрибутов, а в результате мне нужно получить два элемента, с определеными атрибутами из одного исходного
2. потом структура xml которая должна получится имеет множество новвых элементов, которые представляют собой определенную логику, и тут xsl оказывается не способной делать некоторые вещи
...
Рейтинг: 0 / 0
XML-TO-XML
    #34256214
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drewsя как-то почитав xsl, отказался от этого пути. возможно я не прав, но такого рода преобразования показались мне излишне сложными.
вот что я имею ввиду.
1. в исходном xml один элемент имеет много атрибутов, а в результате мне нужно получить два элемента, с определеными атрибутами из одного исходного
2. потом структура xml которая должна получится имеет множество новвых элементов, которые представляют собой определенную логику, и тут xsl оказывается не способной делать некоторые вещи

Когда логика находится за гранью XSL, то вроде бы можно создать расширения на Java, которые будут дергатся при трансформации.

Просто если XSLT из-за своей декларативной структуры кажется сложным для изучения, это ещё не значит что он плохо подходит для задачи.
...
Рейтинг: 0 / 0
XML-TO-XML
    #34256338
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
drewsя как-то почитав xsl, отказался от этого пути. возможно я не прав, но такого рода преобразования показались мне излишне сложными.
вот что я имею ввиду.

1. в исходном xml один элемент имеет много атрибутов, а в результате мне нужно получить два элемента, с определеными атрибутами из одного исходного
2. потом структура xml которая должна получится имеет множество новвых элементов, которые представляют собой определенную логику, и тут xsl оказывается не способной делать некоторые вещи XSLT умеет все или почти все..., он для ЭТОГО и придуман, изучай! а если нужны неординарные действия, тебе правильно сказали, можно дергать методы класса из самого XSLT.
Успехов!
...
Рейтинг: 0 / 0
XML-TO-XML
    #34256364
drews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то есть из самого xslt?
а можете пример кинуть, использования какогонибудь метода из xslt?
...
Рейтинг: 0 / 0
XML-TO-XML
    #34256487
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drewsто есть из самого xslt?
а можете пример кинуть, использования какогонибудь метода из xslt?
Ёпт
...
Рейтинг: 0 / 0
XML-TO-XML
    #34256626
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это XML
Код: plaintext
1.
2.
3.
4.
5.
6.
<?xml version="1.0"?>
<doc>
	<date year="1997" month="5" day="7" format="EEEE, MMMM dd (D), yyyy z"/>
	<date year="1998" month="1" day="10" format="MMM d, yy"/>
	<date year="1999" month="2" day="5" format="EE, MMM dd, yyyy"/>
</doc>


этот XSLT делает из входного выходной в формате HTML
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:my="IntDate"
    xmlns:date="java.util.Date"
	exclude-result-prefixes="date my #default"
    version="1.0">


  <xsl:output method="html"/>

  <xsl:template match="doc">
    <xsl:value-of select="date:toString(date:new())"/>   <br/><br/>
      <xsl:apply-templates select="date"/>
  </xsl:template>

  <xsl:template match="date">
    <b><xsl:value-of select="my:getDate(number(@year), number(@month), number(@day), string(@format))"/></b>
   <br/>
  </xsl:template>
</xsl:stylesheet>

а это программка демонстрации
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 public   class  IntDate
{
	 public  Object getDate( double  year,  double  month,  double  day, String format)
	{
		// Date(int, int, int) has been deprecated, so use Calendar to
		// set the year, month, and day.
		Calendar c = Calendar.getInstance();
		// Convert each argument to int.
		c.set(( int )year,( int )month,( int )day);
		// create formatter
		SimpleDateFormat dateFormat =  new  SimpleDateFormat(format);
		// perform formatting	
		 return  dateFormat.format(c.getTime());
	}

}

а это результат
Код: plaintext
1.
2.
3.
4.
5.
Mon Jan  15   17 : 33 : 53  MSK  2007 

суббота, Июнь  07  ( 158 ),  1997  MSD 
фев  10 ,  98  
Пт, мар  05 ,  1999  
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / XML-TO-XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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