2010-06-22 2 views
1

Можно ли преобразовать nu.XOM.Element в org.w3c.dom.Element?convert nu.XOM.Element to org.w3c.dom.Element

Я пытаюсь построить XML с помощью API XOM. Но некоторые из моих устаревших API ожидаются org.w3c.dom.Element. Итак, я просто хочу знать, могу ли я преобразовать.

Спасибо :)

ответ

1

Существует nu.xom.converters.DOMConverter класса, который обеспечивает способ перевода всего документа XOM в соответствующем DOM документ, но вы не можете сделать это для отдельных элементов, вероятно, потому, что в W3C Element не может существовать без родителя Document.

+0

Я думаю, его другой путь - DOMConverter преобразует w3c в XOM-х. – HanuAthena

+0

@HanuAthena: Он делает оба. Есть один метод, который делает XOM-> DOM – skaffman

+0

Мне жаль, я не могу понять, какой именно метод - http://www.xom.nu/apidocs/index.html?nu/xom/converters/DOMConverter.html – HanuAthena

1

XOM Документ:

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

использованием 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, потому что указано, как получить текущую DOMImplementation, которая необходима. Я понятия не имею, почему сам XOM не делает это по умолчанию. – 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); 
    } 
}