2010-11-15 51 views
4

je suis besoin de convertir un fichier XML construire avec dom4j le document w3c et n'ont pas la moindre idée sur la façon dont le faire ...convertir dom4j docment le document W3c

+0

S'il vous plaît fournir plus de détails quant à ce que vous voulez faire, il est vraiment peu clair pour moi, au moins. – MeBigFatGuy

Répondre

4

Je suppose que vous voulez aller de :

org.dom4j.Document 

Pour:

org.w3c.dom.Document 

De l'dom4j quick start guide:

Document document = ...; 
String text = document.asXML(); 

D'un JavaRanch example sur la corde au document:

public static Document stringToDom(String xmlSource) 
     throws SAXException, ParserConfigurationException, IOException { 
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder builder = factory.newDocumentBuilder(); 
    return builder.parse(new InputSource(new StringReader(xmlSource))); 
} 

Combine 2 et vous devriez avoir ce que vous avez besoin.

6

Si vous avez des documents volumineux, vous souhaiterez peut-être éviter de sérialiser votre document au format texte pour des raisons de performances. Dans ce cas, il est préférable d'utiliser directement les événements SAX pour effectuer la transformation:

private static final TransformerFactory transformerFactory = 
              TransformerFactory.newInstance(); 

public static org.w3c.dom.Document toW3c(org.dom4j.Document dom4jdoc) 
     throws TransformerException { 

    SAXSource source = new DocumentSource(dom4jdoc); 
    DOMResult result = new DOMResult(); 

    Transformer transformer = transformerFactory.newTransformer(); 

    transformer.transform(source, result); 
    return (org.w3c.dom.Document) result.getNode(); 
} 
+0

Merci beaucoup, cela a fonctionné magnifiquement! –

6

Consultez DOMWriter. Cela fonctionne pour moi:

import org.dom4j.DocumentHelper;  
import org.dom4j.io.DOMWriter; 

org.dom4j.Document dom4jDoc = DocumentHelper.createDocument();  
org.w3c.dom.Document w3cDoc = new DOMWriter().write(dom4jDoc) 
+0

fonctionne parfaitement, merci – Anand