Here is an XSLT that will do what you want.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<parentNode>
<xsl:copy-of select=".//childnode1[1]"/>
<xsl:for-each select="./parentNode/child::*[not(name()='childnode1')]">
<xsl:copy-of select="."/>
</xsl:for-each>
</parentNode>
</xsl:template>
</xsl:stylesheet>
At the root we create the that will contain all children. Since we only want one childnode1, we copy the first by using the "[1]" position argument. We then loop through all of the children of parentNode, copying only those that are not named childnode1.