2014-09-03 38 views
0

如何在Java中爲此以下邏輯構建for循環。我有一個項目清單,我需要用KT1標籤爲每個KT2項目結束。請讓我知道什麼是對循環邏輯應用用於創建格式化的特定xml格式的循環邏輯

這是該格式,我有作爲 輸入

<KT1> 
    <KT2> 
    String1 
    </KT2> 
    <KT2> 
    String2 
    </KT2> 
    . 
    . 
    . 

</KT1> 

預計輸出

<KT1> 
    <KT2> 
    String1 
    </KT2> 
</KT1> 

<KT1> 
    <KT2> 
    String2 
    </KT2> 
    </KT1> 

. 
. 
. 

</KT1> 
+0

你是否需要在特定的編程語言中做到這一點,如果是的話?如果您有權訪問它,XSLT將是這種類型操作的理想選擇 – GHC 2014-09-03 12:15:58

+0

@GHC - 我試圖在java中實現 – shockwave 2014-09-04 04:57:16

回答

0

OK,先達,要在Java中使用XSLT,請參閱此問題的答案: java xslt tutorial

你需要的XSLT如下(聲明:我正在學習XSLT自己,所以,如果任何人有沒有更好的辦法,請張貼在這裏發表評論!)

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <!-- Template 1 (see below) --> 
    <xsl:template match="/"> 
     <xsl:element name="Root"> 
      <xsl:apply-templates /> 
     </xsl:element> 
    </xsl:template> 
    <!-- Template 2 (see below) --> 
    <xsl:template match="KT2"> 
     <xsl:element name="KT1"> 
      <xsl:copy> 
       <xsl:apply-templates select="text()" /> 
      </xsl:copy> 
     </xsl:element> 
    </xsl:template> 
    <!-- Template 3 (see below) --> 
    <xsl:template match="text()"> 
     <xsl:copy /> 
    </xsl:template> 
</xsl:stylesheet> 

應用此XSLT的結果到你的輸入XML如下:

<?xml version="1.0" encoding="UTF-8"?> 
<Root> 
    <KT1> 
     <KT2>String1</KT2> 
    </KT1> 
    <KT1> 
     <KT2>String2</KT2> 
    </KT1> 
. 
. 
. 
</Root> 

我對XSLT工作方式的理解是,它將按特定順序應用模板。通過上述XLST的空運行將如下:

1)XML文檔的根與模板1完全匹配 - 它告訴它輸出根節點,然後繼續處理其他元素 2)第一個KT1元素與任何模板都不匹配,因此不會輸出 3)第一個KT1元素的第一個KT2子元素與模板2相匹配 - 它告訴它輸出一個KT1節點,然後複製找到的KT2節點,然後繼續處理 4)KT2節點的文本模板3,匹配其只是複製出來 5)第一KT1元件的第二KT2子匹配模板2 - 等

上面的XSLT是相當規格不過,它可以很容易地變得更加通用 - 谷歌的「XSLT身份變換」爲一個好的開始。