2010-06-22 4 views
1

Est-il possible de convertir nu.XOM.Element en org.w3c.dom.Element? Je tente de construire XML en utilisant les API XOM. Mais peu de mes anciennes APIs attendent org.w3c.dom.Element. Donc, je veux juste savoir si je peux convertir.convertir nu.XOM.Element à org.w3c.dom.Element

Merci :) Vous

Répondre

1

Il y a la classe nu.xom.converters.DOMConverter, qui fournit un moyen de traduire un document XOM entier dans un document DOM correspondant, mais vous ne pouvez pas le faire pour les éléments individuels, probablement parce qu'un W3C Element ne peut pas exister sans un parent Document.

+0

Je suppose que dans l'autre sens - DOMConverter convertit w3c à XOM de. – HanuAthena

+0

@HanuAthena: Il fait les deux. Il y a une méthode qui fait XOM-> DOM – skaffman

+0

Je suis désolé, je ne suis pas capable de comprendre quelle méthode est - http://www.xom.nu/apidocs/index.html?nu/xom/converters/DOMConverter.html – HanuAthena

1

XOM Document:

final nu.xom.Element root = new nu.xom.Element("root"); 
root.appendChild("Hello World!"); 
final nu.xom.Document xomDoc = new nu.xom.Document(root); 

utilisant DOMConverter:

final DocumentBuilderFactory factory = DocumentBuilderFactory 
       .newInstance(); 
final DocumentBuilder builder = factory.newDocumentBuilder(); 
final DOMImplementation impl = builder.getDOMImplementation(); 
final Document w3cDoc= DOMConverter.convert(xomDoc, impl); 
+0

+ 1 parce qu'on lui a demandé comment obtenir le DOMImplementation actuel, ce qui est nécessaire. Je ne sais pas pourquoi XOM lui-même ne le fait pas par défaut. – Kaitsu

0
public static org.w3c.dom.Document xomToDom(Element elem) { 
    try { 
     elem = (Element)elem.copy(); 
     return 
     DOMConverter.convert(new Document(elem), 
       DocumentBuilderFactory.newInstance().newDocumentBuilder().getDOMImplementation()); 
    } catch (ParserConfigurationException e) { 
     throw new RuntimeException(e); 
    } 
}