2013-06-04 127 views
-1

我有一個非常密集的XML文件,平均有116列,700多行,有時候更少。目前處理這個XML文件的唯一方法是將其導入到Excel中,刪除不需要的列和行,然後從那裏操作數據。從XML文件導入特定字段

我在找的是一個更好的方法,理想情況下我只想引入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

要做到這一點的一種方法是在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|字符串以包含所需的元素。再次,這是一個基礎,可能需要爲您的具體示例進行修改。

+0

下面是一個示例文件http://www.filedropper.com/plsrtwp059-10w5我只需要在以下領域NS1:ActivityNumber2 \t NS1:狀態\t NS1:ActivityDate NS1:TypeCodeName \t NS1:LandId3 \t NS1:ServiceClientName \t NS1:ActivityNumber6 NS1:ClientName8 NS1:LtoPlanNumber – mbmiller34

+0

NS1:ActivityNumber6 NS1:ClientName8也可以是7,9分別爲一些未知的原因 – mbmiller34

+0

@ mbmiller34 - 我上面的解決方案應該給你如何理解使用XSLT解決您的實際示例。隨時嘗試解決問題時,可以提出新問題,社區將提供幫助。 – ABach