如何用XPathJava构建XML文档

如何用XPathJava构建XML文档,java,xml,xpath,xml-parsing,jaxb,Java,Xml,Xpath,Xml Parsing,Jaxb,我有以下xpath: /Parent/Children/child 我的目标是完全基于上述xpath构建以下XML文档: <Parent> <Children> <child></child> </Children> </Parent> 如何使用Java实现我的目标 这可以通过使用xslt转换来实现 您可以尝试以下方法: <?xml version="1.0" encoding="UTF-8"?&g

我有以下xpath:

/Parent/Children/child
我的目标是完全基于上述xpath构建以下XML文档:

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

如何使用Java实现我的目标

这可以通过使用xslt转换来实现

您可以尝试以下方法:

<?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>

您是如何设想从XPath创建XML的?所有的价值从何而来?如何使用Java实现我的目标?解析xpath字符串,然后构建XML层次结构,例如使用DOM,并使用缩进将其输出到文本中。你问的是哪一部分?这至少是3个不同的问题。我想你提到的所有3个子问题。我想看看有人会如何实现我上面提出的问题。我通常使用jaxb或一些框架,但我希望看到这类任务的正确实现。这是一个为我写代码的请求?对不起,StackOverflow不是这样工作的。请阅读:。不,我有一个使用jaxb的实现,但对于这样一个问题,需要编写大量代码。我想看看有人是如何在不使用jaxb或其他框架的情况下实现这一点的。