@@ -54,10 +54,20 @@ public final class SimpleXmlWriter extends DefaultStreamPipe<ObjectReceiver<Stri
54
54
private String recordTag = "record" ;
55
55
private String rootTag = "records" ;
56
56
private boolean start = true ;
57
+ private boolean separateRoots ;
58
+ private boolean writeXmlHeader =true ;
57
59
58
60
public void setRootTag (final String rootTag ) {
59
61
this .rootTag = rootTag ;
60
62
}
63
+
64
+ public void setWriteXmlHeader (final boolean writeXmlHeader ) {
65
+ this .writeXmlHeader = writeXmlHeader ;
66
+ }
67
+
68
+ public void setSeparateRoots (final boolean separateRoots ) {
69
+ this .separateRoots = separateRoots ;
70
+ }
61
71
62
72
public void setNamespaceFile (final String file ) {
63
73
final Properties properties = ResourceUtil .loadProperties (file );
@@ -68,7 +78,11 @@ public void setNamespaceFile(final String file) {
68
78
69
79
private void writeHeader () {
70
80
final StringBuilder builder = new StringBuilder ();
71
- builder .append ("<?xml version=\" 1.0\" encoding=\" UTF-8\" ?>\n " );
81
+
82
+ if (writeXmlHeader ){
83
+ builder .append ("<?xml version=\" 1.0\" encoding=\" UTF-8\" ?>\n " );
84
+ }
85
+
72
86
builder .append ("<" );
73
87
builder .append (rootTag );
74
88
for (Entry <String , String > entry : namespaces .entrySet ()) {
@@ -85,7 +99,7 @@ private void writeHeader() {
85
99
86
100
@ Override
87
101
public void startRecord (final String identifier ) {
88
- if (start ) {
102
+ if (separateRoots || start ) {
89
103
writeHeader ();
90
104
}
91
105
element = new Element (recordTag );
@@ -102,6 +116,9 @@ public void endRecord() {
102
116
} else {
103
117
getReceiver ().process (element .toString ());
104
118
}
119
+ if (separateRoots ){
120
+ writeFooter ();
121
+ }
105
122
}
106
123
107
124
@ Override
0 commit comments