aboutsummaryrefslogtreecommitdiff
path: root/src/xml_stream.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/xml_stream.erl')
-rw-r--r--src/xml_stream.erl9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/xml_stream.erl b/src/xml_stream.erl
index c923b6ae7..7dedbeb14 100644
--- a/src/xml_stream.erl
+++ b/src/xml_stream.erl
@@ -59,6 +59,15 @@ process_data(CallbackPid, Stack, Data) ->
case Stack of
[El] ->
[El];
+ %% Merge CDATA nodes if they are contiguous
+ %% This does not change the semantic: the split in
+ %% several CDATA nodes depends on the TCP/IP packet
+ %% fragmentation
+ [{xmlelement, Name, Attrs,
+ [{xmlcdata, PreviousCData}|Els]} | Tail] ->
+ [{xmlelement, Name, Attrs,
+ [{xmlcdata, concat_binary([PreviousCData, CData])} | Els]} | Tail];
+ %% No previous CDATA
[{xmlelement, Name, Attrs, Els} | Tail] ->
[{xmlelement, Name, Attrs, [{xmlcdata, CData} | Els]} |
Tail];