Age1mar
@Age1mar
DevOps a little

Как преобразовать сложный Xml в csv?

Всем привет! Составляю программу на java, очень нужна помощь с xslt преобразованием. Нужно из xml сделать csv файл.
У меня вышел такой xslt фильтр:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" omit-xml-declaration="yes" indent="no"/>

    <xsl:template match="node()" name="conv">
        <xsl:call-template name="loop"/>
    </xsl:template>

    <xsl:template name="loop">

        <xsl:for-each select="./*[count(*) = 0]">
            <xsl:value-of select="."/>
            <xsl:if test="position() != last()">
                <xsl:text>,</xsl:text>
            </xsl:if>
            <xsl:if test="position() = last()">
                <xsl:text>,</xsl:text>
            </xsl:if>
        </xsl:for-each>
        <xsl:text>&#xA;</xsl:text>


        <xsl:for-each select="./*[(count(*) != 0) and (name()!='PARAMETRS')] ">
            <xsl:call-template name="loop"/>
        </xsl:for-each>
            <xsl:text>&#xA;</xsl:text>
    </xsl:template>
</xsl:stylesheet>

xml следующей структуры:
<Integration>
	<PARAMETRS>
		<ID>AZD</ID>
		<DATE>2020-01-01</DATE>
	</PARAMETRS>
	<ORG>
		<Thing>
			<object>10220</object>
			<type>U</type>
			<dyn>
				<items>
					<val>988009</val>
					<datebegin>2019-12-12</datebegin>
				</items>
			</dyn>
		</Thing>
		<Thing>
			<object>10221</object>
			<type>U</type>
			<dyn>
				<items>
					<val>988010</val>
					<datebegin>2019-12-13</datebegin>
				</items>
				<items>
					<val>988011</val>
					<datebegin>2019-12-14</datebegin>
				</items>
			</dyn>
		</Thing>
	</ORG>
</Integration>

На выходе я получаю строки разделенную запятыми, и еще несколько строк ( те самые items) со значениями ниже. и не могу понять, как склеить значения...
Я бы сделал через value-of select="concat" но у меня может быть несколько у dyn( 1, 2, 3 ... ), следовательно это не подходит.
На выходе нужен csv, разделённый запятыми.
Посоветуйте пожалуйста, как item склеить со своим родителем? Либо есть более простые способы разбора xml с разным кол-ом подразделов.
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы