Project

General

Profile

1
package eu.dnetlib.miscutils.functional.xml;
2

    
3
import java.io.StringWriter;
4
import java.util.function.Function;
5
import javax.xml.transform.*;
6
import javax.xml.transform.dom.DOMSource;
7
import javax.xml.transform.stream.StreamResult;
8

    
9
import org.w3c.dom.Node;
10

    
11

    
12
public class SerializeXml implements Function<Node,String> {
13

    
14
	private TransformerFactory transformerFactory;
15
	private Transformer transformer;
16

    
17
	public SerializeXml() {
18
		try {
19
			this.transformer = getTransformerFactory().newTransformer();
20
			transformer.setOutputProperty(OutputKeys.INDENT, "yes");
21
		} catch (TransformerConfigurationException e) {
22
			throw new IllegalStateException(e);
23
		} catch (TransformerFactoryConfigurationError e) {
24
			throw new IllegalStateException(e);
25
		}
26
	}
27

    
28
	@Override
29
	public String apply(Node arg) {
30
		StreamResult result = new StreamResult(new StringWriter());
31
		DOMSource source = new DOMSource(arg);
32
		try {
33
			transformer.transform(source, result);
34
			return result.getWriter().toString();
35
		} catch (TransformerException e) {
36
			throw new IllegalStateException(e);
37
		}
38
	}
39

    
40
	public TransformerFactory getTransformerFactory() {
41
		return transformerFactory;
42
	}
43

    
44
	public void setTransformerFactory(final TransformerFactory transformerFactory) {
45
		this.transformerFactory = transformerFactory;
46
	}
47

    
48
}
(6-6/7)