gpt4 book ai didi

java - 如何在java中将xml中的嵌套节点解析为csv

转载 作者:太空宇宙 更新时间:2023-11-04 13:13:16 25 4
gpt4 key购买 nike

我可能忽略了这里的解决方案,但我需要帮助将 xml 转换为具有多个嵌套节点的 csv。我收到的 xml 类似于以下示例:

<?xml version="1.0"?>
<familyResponse>
<results>
<childResults>
<childName>Mary</childName>
<childAge>8</childAge>
</childResults>
<childResults>
<childName>Jason</childName>
<childAge>10</childAge>
</childResults>
<childResults>
<childName>Ashley</childName>
<childAge>15</childAge>
</childResults>
<parentResults>
<parentName>Theresa</parentName>
<parentAge>35</parentAge>
</parentResults>
</results>
<results>
<parentResults>
<parentName>Tom</parentName>
<parentAge>21</parentAge>
</parentResults>
</results>
<results>
<childResults>
<childName>Tori</childName>
<childAge>2</childAge>
</childResults>
<parentResults>
<parentName>Sheila</parentName>
<parentAge>19</parentAge>
</parentResults>
</results>
</familyResponse>

总会有一个包含 1 个条目的 ParentResults。可能并不总是有一个 childResults 条目,也可以有多个 childResults 条目。如果没有 childResults 条目,我不需要将 ParentResults 放入文件中,我希望我的 csv 文件如下所示:

parentName,parentAge,childName,childAge
Theresa,35,Mary,8
Theresa,35,Jason,10
Theresa,35,Ashley,15
Sheila,19,Tori,2

我已经有了我的 java 代码并且可以解析 xml,但我需要帮助处理嵌套节点。

在我的 xsl 文件中,我尝试这样做:

<xsl:template match="/">parentName,parentAge,childName,childAge
<xsl:for-each select="//results>
<xsl:value-of select="concat(parentResults/parentName,',',parentResults/parentAge,',',childResults/childName,',',childResults/childAge,'&#xA;')"/>
</xsl:for-each>
</xsl:template>

但这给了我:

parentName,parentAge,childName,childAge
Theresa,35,Mary,8
Sheila,19,Tori,2

我也尝试过这个:

<xsl:template match="/">parentName,parentAge,childName,childAge
<xsl:for-each select="//results>
<xsl:for-each select="//childResults>
<xsl:value-of select="concat(parentResults/parentName,',',parentResults/parentAge,',',childName,',',childAge,'&#xA;')"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>

但这给了我:

parentName,parentAge,childName,childAge
,,Mary,8
,,Jason,10
,,Ashley,15
,,Tori,2

我也尝试过这个:

<xsl:template match="/">parentName,parentAge,childName,childAge
<xsl:for-each select="//results>
<xsl:for-each select="//parentResults>
<xsl:value-of select="concat(parentName,',',parentAge)"/>
</xsl:for-each>
<xsl:for-each select="//childResults>
<xsl:value-of select="concat(',',childName,',',childAge,'&#xA;')"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>

但这给了我:

parentName,parentAge,childName,childAge
Theresa,35,Mary,8
,,Jason,10
,,Ashley,15
Sheila,19,Tori,2

提前致谢。

最佳答案

谢谢雷诺。我能够解决 XSL 的问题,但我也会看看您关于使用 DOM 解析器的建议。为了使其正常工作,对我的 XSL 进行的更改是:

<xsl:template match="/">parentName,parentAge,childName,childAge
<xsl:for-each select="//results>
<xsl:for-each select="//childResults>
<xsl:value-of select="concat(../parentResults/parentName,',',../parentResults/parentAge,',',childName,',',childAge,'&#xA;')"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>

关于java - 如何在java中将xml中的嵌套节点解析为csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33765653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com