Доброго времени суток дамы и господа. Имеется 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 файл, пробую сам по примерам из гугла, не получается нужного формата.
Даже интересно, как вы гуглили. По запросу "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>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей