diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/xml_stream.erl | 9 |
2 files changed, 13 insertions, 0 deletions
@@ -1,5 +1,9 @@ 2007-07-30 Mickael Remond <mickael.remond@process-one.net> + * src/xml_stream.erl: Group CDATA on a single xmlcdata + node (splitting is not relevant as dependant on TCP/IP packet + fragmentation) (EJAB-292). + * src/xml.erl: Remove compilation warnings (EJAB-290). * src/xml.erl: Do not crypt binary CData, but enclose the value in 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]; |