条件为|*nix OS的XML2CSV转换过滤柱
我正在使用 XML格式可以简化为条件为|*nix OS的XML2CSV转换过滤柱,xml,linux,xml-parsing,export-to-csv,Xml,Linux,Xml Parsing,Export To Csv,我正在使用 XML格式可以简化为 <PersonalInfo> <UserDetail> <FirstName>ABC</FirstName> <Occupation>Student</Occupation> <DateOfBirth>08/14/1999</DateOfBirth> </UserDetail> <Ca
<PersonalInfo>
<UserDetail>
<FirstName>ABC</FirstName>
<Occupation>Student</Occupation>
<DateOfBirth>08/14/1999</DateOfBirth>
</UserDetail>
<CaseDetail>....</CaseDetail>
<TransactionDetail></TransactionDetail>
</PersonalInfo>
<PersonalInfo>
<UserDetail>
<FirstName>XYZ</FirstName>
<Occupation>Student</Occupation>
<DateOfBirth>04/25/1991</DateOfBirth>
</UserDetail>
<CaseDetail>....</CaseDetail>
<TransactionDetail></TransactionDetail>
</PersonalInfo>
<PersonalInfo>
<UserDetail>
<FirstName>DEF</FirstName>
<Occupation>Teacher</Occupation>
<DateOfBirth>05/12/1984</DateOfBirth>
</UserDetail>
<CaseDetail>....</CaseDetail>
<TransactionDetail></TransactionDetail>
</PersonalInfo>
现在把我的评论扩展到一个真正的答案。下面是我用来直接将xml转换为csv的xslt。(我使用libxml2的
xsltproc
进行实际转换)
使用xslt和xslt处理器,不过也可以跳过整个xml2csv步骤。模板看起来像
match=“occulation='Student'”
谢谢您的回答。但我有个问题。上面的xml是详细文件的一部分,我知道您的代码在这个选定的块上运行良好。现在,如果我的XML采用以下格式,那么应该应用什么。。。。我必须从这个格式中删除这些信息……谢谢你的及时回复。您还可以告诉我如何避免在输出中包含标题标记吗。like my xml以一些信息标记开始,如和,然后是主xml,因此如何从输出中去除这些标记值。只需为它们定义一个空模板:
和
ABC|Student|08/14/1999
XYZ|Student|04/25/1991
<?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"/>
<xsl:strip-space elements="*"/>
<xsl:template match="PersonalInfo">
<!-- causes only UserDetail nodes to be processed -->
<xsl:apply-templates select="UserDetail"/>
</xsl:template>
<xsl:template match="UserDetail[Occupation='Student']">
<xsl:value-of select="FirstName"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="Occupation"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="DateOfBirth"/>
<xsl:text>
</xsl:text>
</xsl:template>
<!-- catch all the other userdetail here -->
<xsl:template match="UserDetail"/>
</xsl:stylesheet>
ABC,Student,08/14/1999
XYZ,Student,04/25/1991