如何使用XPATH Java构造XML文档

时间:2017-03-31 03:21:57

标签: java xml xpath xml-parsing jaxb

我有以下xpath:

/Parent/Children/child

我的目标是仅基于上面的xpath构建以下XML文档:

<Parent>
  <Children>
    <child></child>
  </Children>
</Parent>

如何使用Java实现目标?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

你可以试试这个:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="2.0">

    <xsl:variable name="path" select="'/Parent/Children/child'"></xsl:variable>

    <xsl:template match="/">
        <xsl:call-template name="createstructure">
            <xsl:with-param name="xpath" select="$path"></xsl:with-param>
        </xsl:call-template>
    </xsl:template>

    <xsl:template name="createstructure">
        <xsl:param name="xpath" select="."/>
        <xsl:variable name="elementname">
            <xsl:choose>
                <xsl:when test="contains($xpath, '/')">
                    <xsl:value-of select="substring-before(replace($xpath, '^/', ''), '/')"/>
                </xsl:when>
                <xsl:otherwise><xsl:value-of select="normalize-space($xpath)"/></xsl:otherwise>
            </xsl:choose>
        </xsl:variable>
        <xsl:element name="{$elementname}">
            <xsl:choose>
                <xsl:when test="contains($xpath, '/')">
                    <xsl:call-template name="createstructure">
                        <xsl:with-param name="xpath" select="substring-after(replace($xpath, '^/', ''), '/')"/>
                    </xsl:call-template>
                </xsl:when>
            </xsl:choose>
        </xsl:element>
    </xsl:template>

</xsl:stylesheet>