【问题标题】:Delete lines in XML where a certain column contains duplicates删除 XML 中某列包含重复项的行
【发布时间】:2013-11-01 11:40:08
【问题描述】:

我不经常使用 XML,但我需要调整一些数据。 我在记事本++下面发布了一行。我需要删除 LoanID 重复的整行。这些文件包含大约 200.000 行,其中 200 个 LoanID 是重复的。

因为整行不需要重复,但只有 1 个“列”我不能使用 TextFX 插件。 例如,BorrowerID 可能包含重复项。只有 LoanID 不允许包含重复项。

第 1 行:

<ns1:Loan>ns1:Identifiers:LoanID>876298<LoanID>  <ns1:IsRegulatedLoan>ND,6</ns1:IsRegulatedLoan><ns1:Originator>TestBank</ns1:Originator><ns1:ServicerID>Testbank NV</ns1:ServicerID><ns1:BorrowerID>26547</ns1:BorrowerID><ns1:PropertyID>364239</ns1:PropertyID>

第 2 行:

ns1:Loan ns1:Identifiers>:LoanID>819305:LoanID>
ns1:IsRegulatedLoan>ND,6/:IsRegulatedLoanns1:Originator>TestBank/ns1:Originator>ns1:ServicerID>Testbank NV</ns1:ServicerID>ns1:BorrowerID>195797:BorrowerID>

【问题讨论】:

  • 您拥有的 XML 无效,例如在第 2 行中缺少

标签: xml duplicates notepad++


【解决方案1】:

在“行”级别操作 XML 不是一个好主意,因为行尾没有特别的意义,很容易改变。

对于这种操作,大多数人会使用 XSLT。 XSLT 有一个学习曲线,但如果您打算使用 XML,那么它是您工具包的重要组成部分,因此非常值得掌握它。典型代码(在 XSLT 2.0 中)如下所示:

<xsl:for-each-group select="ns1:Loan" group-by="LoanId">
  <xsl:copy-of select="current-group()[1]"/>
</xsl:for-each-group>

如果有一组重复项,将删除除第一个之外的所有内容。

【讨论】:

    猜你喜欢
    • 2020-09-11
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    相关资源
    最近更新 更多