Как я могу использовать Saxon
библиотеку преобразования xslt для преобразования XML-файла, который содержит много узлов, в простую строку csv? Значит, я хочу, чтобы Саксон конкатенировал каждую запись employee
как csv и соединил их все вместе.
Это настройка саксона, но я не знаю, как я не смог преобразовать входной XML-файл с ним:
//false = does not required a feature from a licensed version of Saxon.
Processor processor = new Processor(false);
XsltCompiler compiler = processor.newXsltCompiler();
compiler.compile(new StreamSource("transformation.xslt"));
Serializer serializer = processor.newSerializer();
serializer.setOutputProperty(Serializer.Property.OMIT_XML_DECLARATION, "yes");
//TODO
//String result = serializer...serializeNodeToString();
Я хочу преобразовать следующий xml:
<employees stage="test">
<employee>
<details>
<name>Joe</name>
<age>34</age>
</details>
<address>
<street>test</street>
<nr>12</nr>
</address>
</employee>
<employee>
<address>....</address>
<details>
<!-- note the changed order of elements! -->
<age>24</age>
<name>Sam</name>
</details>
</employee>
</employees>
Строка result
должна содержать следующее (одна большая строка с csv-строками, разделенными переносом строк):
test,Joe,34,test,12\n
test,Sam,24,...\n
Xslt может быть похож на:
<xsl:transform version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="employee">
<xsl:value-of select="name"/>
<xsl:value-of select="age"/>
</xsl:template>
</xsl:transform>