преобразовать документ dom4j в документ W3c

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


person Jorge    schedule 15.11.2010    source источник
comment
Пожалуйста, предоставьте более подробную информацию о том, что вы хотите сделать, по крайней мере, мне это действительно неясно.   -  person MeBigFatGuy    schedule 15.11.2010


Ответы (3)


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

org.dom4j.Document

To:

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, и у вас должно быть то, что вам нужно.

person javamonkey79    schedule 15.11.2010

Проверьте 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)
person Kirby    schedule 20.04.2012

Если у вас есть большие документы, вы можете избежать сериализации вашего документа в текст из соображений производительности. В этом случае для преобразования лучше всего использовать события 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();
}
person Chris Lercher    schedule 15.11.2010