2010-01-19 7 views
1

Je travaille avec bibliothèque org.w3c.xml java et rencontrer quelques difficultés à accomplir quelques tâches:comment supprimer les espaces de noms de l'élément

  1. J'ai un objet Element; comment puis-je supprimer les espaces de noms de celui-ci et les prédécesseurs?
  2. Comment créer un document sans les espaces de noms? J'ai essayé

    DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 
    docBuilderFactory.setNamespaceAware(false); 
    DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
    Document doc = docBuilder.parse (new File("C:/Temp/XMLFiles/"+fileName+".xml")); 
    

    Bien que cela semble prometteur, cela ne fonctionne pas vraiment. Je reçois toujours le doc avec des espaces de noms.

  3. Comment créer un document à partir d'un élément?

    Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); 
    doc.adoptNode(dataDefinition); 
    

    où dataDefinition est un élément, mais cela n'a pas fonctionné; Qu'est-ce que je fais mal?

+0

"ne fonctionne pas" ne suffit pas pour obtenir une réponse. * De quelle façon * ça ne marche pas? Avez-vous eu une exception? Si oui, qu'est ce que c'est? – kdgregory

+0

Et je ne crois pas que vous voyez encore des espaces de noms dans un DOM après avoir appelé 'setNamespaceAware (false)'. S'il vous plaît montrer le code complet qui démontre le problème. – kdgregory

+0

jure ... plus tard aujourd'hui éditer mon message ... merci pour votre aide. – special0ne

Répondre

0

Essayez transformer la XSL suivante:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" indent="no"/> 

<xsl:template match="/|comment()|processing-instruction()"> 
    <xsl:copy> 
     <xsl:apply-templates/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="*"> 
    <xsl:element name="{local-name()}"> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:element> 
</xsl:template> 

<xsl:template match="@*"> 
    <xsl:attribute name="{local-name()}"> 
     <xsl:value-of select="."/> 
    </xsl:attribute> 
</xsl:template> 
</xsl:stylesheet> 

Transformer xformer = TransformerFactory.newInstance().newTransformer(new StreamSource(new FileInputStream("xform.xsl"))); 
StringWriter writer = new StringWriter(); 
xformer.transform(new StreamSource(new FileInputStream("input.xml")), new StreamResult(writer)); 
System.out.println(writer.toString());