0

我不经常使用 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>
4

1 回答 1

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>

给定一组重复项,除了第一个之外,它会丢弃所有重复项。

于 2013-11-01T15:16:03.593 回答