Add plist_dict_item_get_key() to allow retrieving the key node for a given item of a #PLIST_DICT
diff --git a/include/plist/plist.h b/include/plist/plist.h
index bba735d..7a41fb4 100644
--- a/include/plist/plist.h
+++ b/include/plist/plist.h
@@ -353,9 +353,9 @@
     void plist_dict_next_item(plist_t node, plist_dict_iter iter, char **key, plist_t *val);
 
     /**
-     * Get key associated to an item. Item must be member of a dictionary
+     * Get key associated key to an item. Item must be member of a dictionary.
      *
-     * @param node the node
+     * @param node the item
      * @param key a location to store the key. The caller is responsible for freeing the returned string.
      */
     void plist_dict_get_item_key(plist_t node, char **key);
@@ -371,6 +371,14 @@
     plist_t plist_dict_get_item(plist_t node, const char* key);
 
     /**
+     * Get key node associated to an item. Item must be member of a dictionary.
+     *
+     * @param node the item
+     * @return the key node of the given item, or NULL.
+     */
+    plist_t plist_dict_item_get_key(plist_t node);
+
+    /**
      * Set item identified by key in a #PLIST_DICT node.
      * The previous item identified by key will be freed using #plist_free.
      * If there is no item for the given key a new item will be inserted.
diff --git a/src/plist.c b/src/plist.c
index dd659b8..29dbfb7 100644
--- a/src/plist.c
+++ b/src/plist.c
@@ -618,6 +618,17 @@
     }
 }
 
+PLIST_API plist_t plist_dict_item_get_key(plist_t node)
+{
+    plist_t ret = NULL;
+    plist_t father = plist_get_parent(node);
+    if (PLIST_DICT == plist_get_node_type(father))
+    {
+        ret = (plist_t)node_prev_sibling(node);
+    }
+    return ret;
+}
+
 PLIST_API plist_t plist_dict_get_item(plist_t node, const char* key)
 {
     plist_t ret = NULL;