aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMickaël Rémond <mickael.remond@process-one.net>2008-05-14 17:49:23 +0000
committerMickaël Rémond <mickael.remond@process-one.net>2008-05-14 17:49:23 +0000
commit4613080337507a248046517c9e6ca79a3d0ad796 (patch)
tree8c57f973f5309bfa419b40dfbd817c74e800462c
parentadded 1.1.3 tag for package generation (diff)
* Adding experimental branch.
SVN Revision: 1324
-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];