2010-11-15 4 views
4

я необходимо преобразовать XML-строить с dom4j на w3c документа и не имеют ни малейшего представления о том, как сделать это ...новообращенный dom4j docment в W3c документ

+0

Просьба представить более подробную информацию о том, что вы хотите сделать, по крайней мере, для меня это неясно. – MeBigFatGuy

ответ

4

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

org.dom4j.Document 

To:

org.w3c.dom.Document 

от dom4j quick start guide:

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

С JavaRanch example на строки в документ:

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

6

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

Большое спасибо, это сработало красиво! –

6

Проверьте 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) 
+0

совершенные работы, спасибо – Anand