2015-07-16 1 views
-2
XML : 
<tag1> 

<tag2> 

<tag2> 
</tag2> 

<tag2> 
</tag2> 

<tag2> 
</tag2> 

</tag2> 

</tag1> 

J'ai un fichier XML de type ci-dessus. il y a un nœud parent de tag2, à l'intérieur de tag2 il y a plusieurs nœuds enfants tag2. Je veux supprimer le noeud parent tag2 du fichier XML. Comment puis-je le faire?Suppression de balise XML avec des noms similaires

je veux maintenant comme ci-dessous

<tag1> 

    <tag2>---remove 

    <tag2> 
    </tag2> 

    <tag2> 
    </tag2> 

    <tag2> 
    </tag2> 

    </tag2>--remove 

    </tag1> 
+3

Veuillez lire [** Comment poser une bonne question? **] (http://stackoverflow.com/help/how-to-ask). Après 8 mois ici posant 9 questions (et jamais [** acceptant **] (http://meta.stackoverflow.com/q/5234/234215) une réponse), vous devriez vraiment savoir comment utiliser ce site maintenant. – kjhughes

Répondre

2

Ceci est un possible XSL:

<?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="@* | node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@* | node()"/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="tag2[tag2]"> 
     <xsl:apply-templates select="node()"/> 
    </xsl:template> 

</xsl:stylesheet> 

brève explication:

  • <xsl:template match="@* | node()">...: modèle d'identité. Ce modèle copie tous les nœuds et attributs auxquels il est appliqué au XML de sortie. Ce modèle remplace le modèle d'identité pour l'élément <tag2> ayant un autre enfant <tag2>. Ce modèle applique le modèle d'identité uniquement aux nœuds enfants du parent <tag2> afin que le parent <tag2> ne soit pas copié dans le fichier XML de sortie.