Make sure to convert predefined xml entities in xml output

For string nodes, a set of special characters must be converted to
predefined xml entities. This patch adds an entitiy test case for
this and makes libplist pass it fine by explicitly adding text nodes.
diff --git a/src/xplist.c b/src/xplist.c
index 15c9497..ce8dec1 100644
--- a/src/xplist.c
+++ b/src/xplist.c
@@ -196,7 +196,12 @@
     {
         xmlNodeAddContent(xstruct->xml, BAD_CAST("\t"));
     }
-    child_node = xmlNewChild(xstruct->xml, NULL, tag, BAD_CAST(val));
+    if (node_data->type == PLIST_STRING) {
+        /* make sure we convert the following predefined xml entities */
+        /* < = &lt; > = &gt; ' = &apos; " = &quot; & = &amp; */
+        child_node = xmlNewTextChild(xstruct->xml, NULL, tag, BAD_CAST(val));
+    } else
+        child_node = xmlNewChild(xstruct->xml, NULL, tag, BAD_CAST(val));
     xmlNodeAddContent(xstruct->xml, BAD_CAST("\n"));
     g_free(val);
 
diff --git a/test/data/1.plist b/test/data/1.plist
index dfa27b0..c7135e9 100644
--- a/test/data/1.plist
+++ b/test/data/1.plist
@@ -29,5 +29,7 @@
 	<key>Some Data</key>
 	<data>
 	</data>
+	<key>Some Entities</key>
+	<string>hellow world &amp; others &lt;nodes&gt; are &quot;fun!?&apos;</string>
 </dict>
 </plist>