从XML文件导入特定字段

时间:2013-06-04 16:24:14

标签: xml database excel xslt import

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

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

以下是示例文件Click Here

我只需要以下字段,

ns1:ActivityNumber2 ns1:状态ns1:ActivityDate ns1:TypeCodeName ns1:LandId3 ns1:ServiceClientName ns1:ActivityNumber6 ns1:ClientName8 ns1:LtoPlanNumber

ns1:ActivityNumber6 ns1:ClientName8 可能因某些未知原因而偶尔被命名为7和9

1 个答案:

答案 0 :(得分: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|字符串即可包含所需的元素。同样,这是一个基础,可能需要针对您的具体示例进行修改。