python 代码的并行执行 - 使用 XSLT 进行 XML 解析

发布于 2025-01-17 22:32:55 字数 4940 浏览 1 评论 0原文

我是Python的新手,并且一直在尝试使用XSLT转换XML文件。我们使用多个XSLT来处理XML文件,并将转换为CSV

def main(argv):
     
        /*Only Part of code is pasted*/

    while i < len(xslfile) and i < len(outfile):
    
        xsl = ET.parse(xslfile[i])
        transform = ET.XSLT(xsl)        
        newdom = transform(xml)
     
        with open(outfile[i], 'wb') as f:
           
            f.write(newdom)
          
        i += 1

if __name__ == "__main__":
    main(sys.argv[1:])

输入将是: “ xml.py -x” xmlfiLename“ -s” firstxsl.xsl“ -o” firstcsv.csv'-s s secondxsl.xsl“ -o” secondcsv.csv

'并行

   
  <xsl:for-each select="Collection/List/Event">
       <xsl:value-of select="position()"/><xsl:text>,</xsl:text>
<xsl:value-of select="$var1"/> <xsl:text>,</xsl:text>
<xsl:value-of select="srvid"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="acct"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="comm"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="stat"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="acct"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="test"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="flg"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="plan"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="state"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="id"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="grpid"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="name"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="call"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="origin"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="use"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="address"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="callid"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="context"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="sertype"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="address1"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="rqt"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="time"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="info"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="tet1"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="test2"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="test3"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="RoundingAmount"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="UsageRoundingAmount"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="UsageRoundingAmountUnit"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="Agg"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="IniId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="IniExId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="IniDeviceId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="DeviceExternalId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="Flags"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="WalId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="WalOwnerId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="WalExternalId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="Tax"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="TaxCert"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="TaxLoc"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="EventT"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="Dur"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="EventId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="Date"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="Center"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="AuthEventId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="Del"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="VersionId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="PrimaUserId"/> <xsl:text>,</xsl:text>
<xsl:value-of select="PrimUserExtrId"/><xsl:text>,</xsl:text>
<xsl:value-of select="InitiatorType"/><xsl:text>,</xsl:text>
<xsl:value-of select="WalOwnerType"/><xsl:text>,</xsl:text>
<xsl:value-of select="tag"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="area"/> 

I am new to python and have been trying to transform a XML file using XSLT.We are using multiple XSLT to process the XML file and convert to csv

def main(argv):
     
        /*Only Part of code is pasted*/

    while i < len(xslfile) and i < len(outfile):
    
        xsl = ET.parse(xslfile[i])
        transform = ET.XSLT(xsl)        
        newdom = transform(xml)
     
        with open(outfile[i], 'wb') as f:
           
            f.write(newdom)
          
        i += 1

if __name__ == "__main__":
    main(sys.argv[1:])

Input will be :
"xml.py -x "XMLFILENAME" -s "firstxsl.xsl" -o "firstcsv.csv" -s "secondxsl.xsl" -o "secondcsv.csv"

is there any best way to run the parsing of firstxsl and secondxsl in parallel ?

sample xslt

This is the master event xslt

   
  <xsl:for-each select="Collection/List/Event">
       <xsl:value-of select="position()"/><xsl:text>,</xsl:text>
<xsl:value-of select="$var1"/> <xsl:text>,</xsl:text>
<xsl:value-of select="srvid"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="acct"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="comm"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="stat"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="acct"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="test"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="flg"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="plan"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="state"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="id"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="grpid"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="name"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="call"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="origin"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="use"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="address"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="callid"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="context"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="sertype"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="address1"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="rqt"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="time"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="info"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="tet1"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="test2"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="test3"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="RoundingAmount"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="UsageRoundingAmount"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="UsageRoundingAmountUnit"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="Agg"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="IniId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="IniExId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="IniDeviceId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="DeviceExternalId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="Flags"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="WalId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="WalOwnerId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="WalExternalId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="Tax"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="TaxCert"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="TaxLoc"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="EventT"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="Dur"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="EventId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="Date"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="Center"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="AuthEventId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="Del"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="VersionId"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="PrimaUserId"/> <xsl:text>,</xsl:text>
<xsl:value-of select="PrimUserExtrId"/><xsl:text>,</xsl:text>
<xsl:value-of select="InitiatorType"/><xsl:text>,</xsl:text>
<xsl:value-of select="WalOwnerType"/><xsl:text>,</xsl:text>
<xsl:value-of select="tag"/>  <xsl:text>,</xsl:text>
<xsl:value-of select="area"/> 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文