Преобразование Xml файла с помощью xslt. Java

167
10 апреля 2018, 06:20

Доброго времени суток дамы и господа. Имеется xml файл следующего вида :

<entries>
  <entry>
     <field>значение поля field</field>
 </entry>
  ...
   <entry>
    <field>значение поля field</field>
  </entry>
</entries>
  (с N вложенных элементов <entry>)

Надо его привести к

<entries>
    <entry field="значение поля field">
   ...
     <entry field="значение поля field">
</entries>
    (с N вложенных элементов <entry>)

Да, тут есть подобные вопросы, но меня интересует не результат, а как сделать это в приложении, через IDEA. У меня программа создает файл XML в первичном виде, потом сама его преобразовывает, поэтому мне нужно преобразование сделать именно с помощью средств языка. Гуглил, не нашел нигде работы через java, везде один чистый xml или xslt.

UPD. Помогите написать xslt файл, пробую сам по примерам из гугла, не получается нужного формата.

Answer 1

Даже интересно, как вы гуглили. По запросу "java xslt" первая же ссылка - пример из официальной документации.

public class XslTransform {
    public static void main(String[] args) throws IOException, URISyntaxException, TransformerException {
        TransformerFactory factory = TransformerFactory.newInstance();
        Source xslt = new StreamSource(new File("article1a.xsl"));
        Transformer transformer = factory.newTransformer(xslt);
        Source xml = new StreamSource(new File("article1.xml"));
        transformer.transform(xml, new StreamResult(new File("output.xml")));
    }
}

UPDATE:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="entries">
    <entries>
      <xsl:apply-templates/>
    </entries>
  </xsl:template>
  <xsl:template match="entry">
    <entry>
      <xsl:for-each select="*">
        <xsl:attribute name="{name()}">
          <xsl:value-of select="text()"/>
        </xsl:attribute>
      </xsl:for-each>
    </entry>
  </xsl:template>
</xsl:stylesheet>
READ ALSO
как удалить Connector/NET 6.9.9

как удалить Connector/NET 6.9.9

Привет всем! Вот уже целый день пытаюсь установить MySql community 57

471
как можно получить резултат примера loop

как можно получить резултат примера loop

У меня есть таблица ц таким свойствам

183
Переименование столбцов при LEFT JOIN

Переименование столбцов при LEFT JOIN

Добрый день ! Допустим есть конструкция

217
Выполнение ShellExecute на сервере

Выполнение ShellExecute на сервере

Существует один локальный файловый сервер, на котором лежит исполняемый файл, доступ на сервер безпарольныйОтдебажить не могу из-за небольших...

254