基于节点值对XML文件排序

2024-09-27 00:21:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图比较两个具有相同内容但有时在不同行上的XML文件。为了克服这个问题,我试图对其中一个子节点上的xml进行排序(这两个文件中的位置通常不同)。在

这是我的示例XML文件

<Report>
<rptName>Sample</rptName>
<reportNameGrp>
<grpName>AggrDataSet</grpName>
<RC>
<rptSubHdr>
<membLglNam>Registered Customer 103</membLglNam>
<membId>RC103</membId>
<relCM>CM022</relCM>
</rptSubHdr>
</RC>
<RC>
<rptSubHdr>
<membLglNam>Registered Customer 055</membLglNam>
<membId>RC055</membId>
<relCM>CM022</relCM>
</rptSubHdr>
</RC>
<RC>
<rptSubHdr>
<membLglNam>Registered Customer 047</membLglNam>
<membId>RC047</membId>
<relCM>CM022</relCM>
</rptSubHdr>
</RC>
<RC>
<rptSubHdr>
<membLglNam>Registered Customer 015</membLglNam>
<membId>RC015</membId>
<relCM>CM022</relCM>
</rptSubHdr>
</RC>
<RC>
<rptSubHdr>
<membLglNam>Registered Customer 024</membLglNam>
<membId>RC024</membId>
<relCM>CM022</relCM>
</rptSubHdr>
</RC>
</reportNameGrp>
</Report>

我试图根据<membId>节点对<RC>父节点进行排序。不管我用什么方法,我的文档都无法排序。我尝试使用XSLT,但排序不起作用。我甚至试着写了一个python脚本,但是它没有排序。在

这是我的python脚本-

^{pr2}$

我执行python test.py 2.xml membId来运行脚本(请注意,2.xml是输入xml的文件名,membId是我要查找的标记)。在

我将非常感谢在我出问题的地方提供任何帮助。我刚开始使用Python,所以我可能犯了一些非常明显的错误。python脚本或XSLT解决方案(两者都可以)对我有用!在


Tags: 文件report脚本节点排序customerxmlrc
1条回答
网友
1楼 · 发布于 2024-09-27 00:21:47

考虑下面的XSLT脚本与Python的lxml集成。此外,您还尝试运行动态命令行进程。不幸的是,XSLT的结构将根据您要排序的特定节点而改变。下面将特别按升序对<membId>进行排序:

XSLT

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output version="1.0" encoding="UTF-8" indent="yes" />
<xsl:strip-space elements="*"/>

  <!  Identity Transform  >
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>  

  <!  Sort MembId under RC/rptSubHdr  >
  <xsl:template match="reportNameGrp">
    <xsl:copy>      
        <xsl:copy-of select="grpName"/>
        <xsl:apply-templates select="RC">          
            <xsl:sort select="rptSubHdr/membId" order="ascending"/>
        </xsl:apply-templates>
    </xsl:copy>
  </xsl:template>

</xsl:transform>

Python

^{pr2}$

相关问题 更多 >

    热门问题