将XML表值导出为CSV

时间:2018-10-29 14:18:57

标签: html xml csv xslt

我有一个由各种标签组成的xml文件。我对名为 tbody 的标签感兴趣,其后是 tr td 。但是我只想解析出现在第3个正文中的数据。我已经编写了这段代码,但是它无法根据position []

对其进行过滤
    <xsl:for-each select="//tbody[position()=3]">
        <xsl:for-each select="tr">
            <xsl:for-each select="td">
                <xsl:value-of select="."/>
                <xsl:if test="position() != last()">
                    <xsl:value-of select="$delimiter"/>
                </xsl:if>
            </xsl:for-each>
        <xsl:text>&#xa;</xsl:text>
        </xsl:for-each>
    </xsl:for-each>

有人可以帮助我指导我做错了什么吗?如何在xml文件中位置为3的 body 上执行循环。

xml本身非常庞大,并且是使用查看页面源选项生成的。您可以从下面的链接https://ufile.io/4foqi

下载相同的文件

1 个答案:

答案 0 :(得分:1)

当您执行//tbody[position()=3]时,实际上是将所有处于该位置的tbody元素置于自己的父项下。

如果您希望第三个tbody元素(无论它在XML中的位置如何),都可以这样做

<xsl:for-each select="(//tbody)[position()=3]">

请注意,您可以将声明缩短到此...

<xsl:for-each select="(//tbody)[3]">