diff --git a/ndn-cpp/c/encoding/BinaryXMLElementReader.h b/ndn-cpp/c/encoding/BinaryXMLElementReader.h
index 9a80deb..f4501ad 100644
--- a/ndn-cpp/c/encoding/BinaryXMLElementReader.h
+++ b/ndn-cpp/c/encoding/BinaryXMLElementReader.h
@@ -25,7 +25,7 @@
  * Initialize an ndn_ElementListener struct to use the onReceivedElement function pointer.
  * @param self pointer to the ndn_ElementListener struct
  * @param onReceivedElement pointer to a function which is called when an entire binary XML element is received.
- * self is the pointer to this ndn_ElementListener struct.  See ndn_BinaryXMLElementReader_onReceivedData.
+ * self is the pointer to this ndn_ElementListener struct.  See ndn_BinaryXmlElementReader_onReceivedData.
  */
 static inline void ndn_ElementListener_init
   (struct ndn_ElementListener *self, void (*onReceivedElement)(struct ndn_ElementListener *self, unsigned char *element, unsigned int elementLength))
@@ -34,33 +34,33 @@
 }
   
 /**
- * A BinaryXmlElementReader lets you call ndn_BinaryXMLElementReader_onReceivedData multiple times which uses an
- * ndn_BinaryXMLStructureDecoder to detect the end of a binary XML element and calls
+ * A BinaryXmlElementReader lets you call ndn_BinaryXmlElementReader_onReceivedData multiple times which uses an
+ * ndn_BinaryXmlStructureDecoder to detect the end of a binary XML element and calls
  * (*elementListener->onReceivedElement)(element, elementLength) with the element. 
  * This handles the case where a single call to onReceivedData may contain multiple elements.
  */
-struct ndn_BinaryXMLElementReader {
+struct ndn_BinaryXmlElementReader {
   struct ndn_ElementListener *elementListener;
-  struct ndn_BinaryXMLStructureDecoder structureDecoder;
+  struct ndn_BinaryXmlStructureDecoder structureDecoder;
   int usePartialData;
   struct ndn_DynamicUCharArray partialData;
   unsigned int partialDataLength;
 };
 
 /**
- * Initialize an ndn_BinaryXMLElementReader struct with the elementListener and a buffer for saving partial data.
- * @param self pointer to the ndn_BinaryXMLElementReader struct
- * @param elementListener pointer to the ndn_ElementListener used by ndn_BinaryXMLElementReader_onReceivedData.
+ * Initialize an ndn_BinaryXmlElementReader struct with the elementListener and a buffer for saving partial data.
+ * @param self pointer to the ndn_BinaryXmlElementReader struct
+ * @param elementListener pointer to the ndn_ElementListener used by ndn_BinaryXmlElementReader_onReceivedData.
  * @param buffer the allocated buffer.  If reallocFunction is null, this should be large enough to save a full element, perhaps 8000 bytes.
  * @param bufferLength the length of the buffer
  * @param reallocFunction see ndn_DynamicUCharArray_ensureLength.  This may be 0.
  */
-static inline void ndn_BinaryXMLElementReader_init
-  (struct ndn_BinaryXMLElementReader *self, struct ndn_ElementListener *elementListener,
+static inline void ndn_BinaryXmlElementReader_init
+  (struct ndn_BinaryXmlElementReader *self, struct ndn_ElementListener *elementListener,
    unsigned char *buffer, unsigned int bufferLength, unsigned char * (*reallocFunction)(unsigned char *, unsigned int))
 {
   self->elementListener = elementListener;
-  ndn_BinaryXMLStructureDecoder_init(&self->structureDecoder);
+  ndn_BinaryXmlStructureDecoder_init(&self->structureDecoder);
   self->usePartialData = 0;
   ndn_DynamicUCharArray_init(&self->partialData, buffer, bufferLength, reallocFunction);
 }
@@ -68,13 +68,13 @@
 /**
  * Continue to read binary XML data until the end of an element, then call (*elementListener->onReceivedElement)(element, elementLength).
  * The buffer passed to onReceivedElement is only valid during this call.  If you need the data later, you must copy.
- * @param self pointer to the ndn_BinaryXMLElementReader struct
+ * @param self pointer to the ndn_BinaryXmlElementReader struct
  * @param data pointer to the buffer with the binary XML bytes
  * @param dataLength length of data
  * @return 0 for success, else an error code
  */
-ndn_Error ndn_BinaryXMLElementReader_onReceivedData
-  (struct ndn_BinaryXMLElementReader *self, unsigned char *data, unsigned int dataLength);
+ndn_Error ndn_BinaryXmlElementReader_onReceivedData
+  (struct ndn_BinaryXmlElementReader *self, unsigned char *data, unsigned int dataLength);
 
 #ifdef	__cplusplus
 }
