2016-05-08 6 views
4

У меня есть xml-файл как объект в Java, как org.w3c.dom.Document doc, и я хочу преобразовать его в файл. Как преобразовать тип Document в файл? спасибоConvert org.w3c.dom.Document в файл

Редактировать: Я хочу добавить элементы метаданных в существующий xml-файл (стандартная dita) с типом File. Я знаю способ добавления элементов в файл, но затем мне нужно преобразовать файл в org.w3c.dom.Document. Я сделал это с помощью метода loadXML:

private Document loadXML(File f) throws Exception{ 
DocumentBuilder b = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
return builder.parse(f); 

После того, что я изменить org.w3c.dom.Document, то я хочу, чтобы продолжить с потоком программы, и я должен преобразовать документ документ обратно к Файл. Каков эффективный способ сделать это? Или что является лучшим решением для получения некоторых элементов в XML-файле без его преобразования? Благодаря

+1

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

+0

Я добавил дополнительную информацию в первом сообщении – jer08

+0

Я не уверен, что означает преобразование DOM в файл. Вы можете сериализовать содержимое DOM как XML, записывая это в строку или файл; это то, о чем вы просите? Я также не уверен, что вы пытаетесь сделать с результирующим файлом и почему это невозможно сделать с помощью API DOM. Пример того, что вы на самом деле пытаетесь выполнить, может помочь. – keshlam

ответ

6

Вы можете использовать класс Transformer для вывода всего содержимого XML в файл, как показано ниже:

Document doc =... 

// write the content into xml file 
    DOMSource source = new DOMSource(doc); 
    FileWriter writer = new FileWriter(new File("/tmp/output.xml")); 
    StreamResult result = new StreamResult(writer); 

    TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
    Transformer transformer = transformerFactory.newTransformer(); 
    transformer.transform(source, result); 

надеюсь, что это может помочь.

0

С JDK 1.8.0 короткий путь заключается в использовании встроенного XMLSerializer

import com.sun.org.apache.xml.internal.serialize.XMLSerializer; 

Document doc = //use your method loadXML(File f) 

//change Document 

java.io.Writer writer = new java.io.FileWriter("MyOutput.xml"); 
XMLSerializer xml = new XMLSerializer(writer, null); 
xml.serialize(doc); 
Смежные вопросы