如何将XML转换为伪代码或Java代码

时间:2018-02-27 03:56:23

标签: xml pseudocode

我下面有XML文件。将它转换为某种伪代码的最简单方法是什么? 输入:

<assign:variable>
    <name>VAR0</name>
    <value>0</value>
</assign:variable>
<assign:variable>
    <name>VAR1</name>
    <value>0</value>
</assign:variable>
<match:variable name="VAR0" value="1">
    <match:variable name="VAR1" value="1">
    <assign:variable>
        <name>VAR2</name>
        <value>0</value>
    </assign:variable>
    </match:variable>
</match:variable>

期望的输出。

int var0 = 0;
int var1 = 1;
if (var0==1) {
    if (var1==1) {
        int var2=0;
    }
}

1 个答案:

答案 0 :(得分:0)

使用XSLT相当容易。这是一个草图。我使用的文本值模板是XSLT 3.0中的一个新功能,但它可以在早期的XSLT版本中轻松完成,它只是更冗长。

<xsl:template match="/">
  <xsl:apply-templates>
    <xsl:with-param name="indent" select="0"/>
  </xsl:apply-templates>
</xsl:template>

<xsl:template match="assign:variable">
  <xsl:param name="indent" as="xs:integer"/>
  <xsl:value-of select="f:indent($indent)"/>
  <xsl:text>int {lower-case(name)} = {value};</xsl:text>
</xsl:template>

<xsl:template match="match:variable">
  <xsl:param name="indent" as="xs:integer"/>
  <xsl:value-of select="f:indent($indent)"/>
  <xsl:text>if ({lower-case(name)} = {value}) {{</xsl:text>
    <xsl:apply-templates>
      <xsl:with-param name="indent" select="$indent + 4"/>
    </xsl:apply-templates>
  <xsl:value-of select="f:indent($indent) || '}'"/>
</xsl:template>

<xsl:function name="f:indent" as="xs:string">
  <xsl:param name="indent" as="xs:integer"/>
  <xsl:value-of select="'&#xa0;', (1 to $indent)!' '" separator=""/>
</xsl:function>