-1

我有一个非常密集的 XML 文件,平均有 116 列和 700 多行,有时更多有时更少。目前我们处理此 XML 文件的唯一方法是将其导入 Excel,删除不需要的列和行,然后从那里操作数据。

我正在寻找的是一种更好的方法,理想情况下我只想引入 10 列(每列由名称定义)并忽略其余的多余数据。有没有办法通过程序或编码方式做到这一点?我快速浏览了 XSLT,但不知道从哪里开始。

这是示例文件点击这里

我只需要以下字段,

ns1:ActivityNumber2 ns1:Status ns1:ActivityDate ns1:TypeCodeName ns1:LandId3 ns1:ServiceClientName ns1:ActivityNumber6 ns1:ClientName8 ns1:LtoPlanNumber

ns1:ActivityNumber6 ns1:ClientName8有时可能会因为某些未知原因分别命名为 7 和 9

4

1 回答 1

0

一种方法是在 XSLT 中使用两个模板:一个按原样将所有内容从源复制到目标,另一个删除除您指定的元素之外的所有内容。

例如,如果我只想保留根元素,<fieldToKeep1>并且<fieldToKeep2>在这样的文档中,执行此操作的 XSLT 基础可能如下所示:

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

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

  <xsl:template
    match="*[not(
             contains(
               '|rootElement|fieldToKeep1|fieldToKeep2|',
               concat('|', name(), '|')
             )
           )]" />

</xsl:stylesheet>

我喜欢这种方法,因为如果您需要保留其他字段,您可以简单地修改|fieldToKeep1|fieldToKeep2|字符串以包含您想要的元素。同样,这是一个基础,可能需要针对您的具体示例进行修改。

于 2013-06-04T16:37:32.567 回答