循环逻辑,用于创建格式化的特定xml格式

时间:2014-09-03 12:12:11

标签: java xml loops for-loop logic

如何在Java中为此逻辑构造for循环。我有一个项目列表,我需要用每个KT2项目的KT1标签结束。请让我知道应用的for循环逻辑是什么

这是我所拥有的格式 的输入

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

</KT1>

预期输出

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

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

.
.
.

</KT1>

1 个答案:

答案 0 :(得分:0)

好的,首先,使用XSLT和Java,看看这个问题的答案: 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匹配,模板3只复制出来 5)第一个KT1元素的第二个KT2子元素与模板2匹配 - 依此类推

上面的XSLT非常具体,它可以很容易地变得更加通用--Google&#34; XSLT Identity Transforms&#34;一个良好的开端。