Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
条件为|*nix OS的XML2CSV转换过滤柱_Xml_Linux_Xml Parsing_Export To Csv - Fatal编程技术网

条件为|*nix OS的XML2CSV转换过滤柱

条件为|*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

我正在使用

XML格式可以简化为

<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>&#0010;</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