конвертировать документ dom4j в документ W3c - PullRequest
4 голосов
/ 15 ноября 2010

Мне нужно преобразовать сборку xml с dom4j в документ w3c и не иметь представления о том, как это сделать ...

Ответы [ 3 ]

8 голосов
/ 20 апреля 2012

Проверьте DOMWriter. Это работает для меня:

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

org.dom4j.Document dom4jDoc = DocumentHelper.createDocument();    
org.w3c.dom.Document w3cDoc = new DOMWriter().write(dom4jDoc)
6 голосов
/ 15 ноября 2010

Если у вас большие документы, вы можете избежать сериализации вашего документа в текстовом виде по соображениям производительности. В этом случае лучше всего использовать события SAX напрямую для преобразования:

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();
}
4 голосов
/ 15 ноября 2010

Я предполагаю, что вы хотите перейти от:

org.dom4j.Document

Кому:

org.w3c.dom.Document

Из краткого руководства dom4j :

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

Из примера JavaRanch для строки в документе:

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)));
}

Объедините 2, и вы получите то, что вам нужно.

...