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身份變換」爲一個好的開始。
來源
2014-09-04 08:10:17
GHC
你是否需要在特定的編程語言中做到這一點,如果是的話?如果您有權訪問它,XSLT將是這種類型操作的理想選擇 – GHC 2014-09-03 12:15:58
@GHC - 我試圖在java中實現 – shockwave 2014-09-04 04:57:16