将dom4j文档转换为W3c文档。

4
我需要将使用dom4j构建的XML转换为W3C文档,但不知道如何实现...

1
请提供更多细节,以便我更清楚地了解您想要做什么,至少对我来说不是很清楚。 - MeBigFatGuy
3个回答

8

请查看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

我假设您想从以下情况开始:

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

将两者结合起来,你应该就有所需的内容了。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接