如何在Java中为此逻辑构造for循环。我有一个项目列表,我需要用每个KT2项目的KT1标签结束。请让我知道应用的for循环逻辑是什么
这是我所拥有的格式 的输入
<KT1>
<KT2>
String1
</KT2>
<KT2>
String2
</KT2>
.
.
.
</KT1>
预期输出
<KT1>
<KT2>
String1
</KT2>
</KT1>
<KT1>
<KT2>
String2
</KT2>
</KT1>
.
.
.
</KT1>
答案 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;一个良好的开端。