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