Major code style change to rename all files to lower case.
diff --git a/ndn-cpp/c/encoding/binary-xml-element-reader.c b/ndn-cpp/c/encoding/binary-xml-element-reader.c
new file mode 100644
index 0000000..4bbd081
--- /dev/null
+++ b/ndn-cpp/c/encoding/binary-xml-element-reader.c
@@ -0,0 +1,63 @@
+/**
+ * @author: Jeff Thompson
+ * See COPYING for copyright and distribution information.
+ */
+
+#include "binary-xml-element-reader.h"
+
+ndn_Error ndn_BinaryXmlElementReader_onReceivedData
+  (struct ndn_BinaryXmlElementReader *self, unsigned char *data, unsigned int dataLength)
+{
+  // Process multiple objects in the data.
+  while(1) {
+    // Scan the input to check if a whole binary XML object has been read.
+    ndn_BinaryXmlStructureDecoder_seek(&self->structureDecoder, 0);
+    
+    ndn_Error error;
+    if (error = ndn_BinaryXmlStructureDecoder_findElementEnd(&self->structureDecoder, data, dataLength))
+      return error;
+    if (self->structureDecoder.gotElementEnd) {
+      // Got the remainder of an element.  Report to the caller.
+#if 0 // TODO: implement saving data parts.
+      this.dataParts.push(data.subarray(0, this.structureDecoder.offset));
+      var element = DataUtils.concatArrays(this.dataParts);
+#endif
+      if (self->usePartialData) {
+        // We have partial data from a previous call, so append this data and point to partialData.
+        if (error = ndn_DynamicUCharArray_set(&self->partialData, data, self->structureDecoder.offset, self->partialDataLength))
+          return error;
+        self->partialDataLength += dataLength;
+                
+        (*self->elementListener->onReceivedElement)(self->elementListener, self->partialData.array, self->partialDataLength);
+        // Assume we don't need to use partialData anymore until needed.
+        self->usePartialData = 0;
+      }
+      else
+        // We are not using partialData, so just point to the input data buffer.
+        (*self->elementListener->onReceivedElement)(self->elementListener, data, self->structureDecoder.offset);
+        
+      // Need to read a new object.
+      data += self->structureDecoder.offset;
+      dataLength -= self->structureDecoder.offset;
+      ndn_BinaryXmlStructureDecoder_init(&self->structureDecoder);
+      if (dataLength == 0)
+        // No more data in the packet.
+        return 0;
+            
+      // else loop back to decode.
+    }
+    else {
+      // Save remaining data for a later call.
+      if (!self->usePartialData) {
+        self->usePartialData = 1;
+        self->partialDataLength = 0;
+      }
+      
+      if (error = ndn_DynamicUCharArray_set(&self->partialData, data, dataLength, self->partialDataLength))
+        return error;
+      self->partialDataLength += dataLength;
+      
+      return 0;
+    }
+  }      
+}
\ No newline at end of file