我有以下xpath:
/Parent/Children/child
我的目标是仅基于上面的xpath构建以下XML文档:
<Parent>
<Children>
<child></child>
</Children>
</Parent>
如何使用Java实现目标?
答案 0 :(得分:0)
这可以通过使用xslt转换来实现。 https://docs.oracle.com/javase/tutorial/jaxp/xslt/transformingXML.html
答案 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>