System.Runtime.Serialization.Json.JsonReader does not handle illegal xml chars in json field names

Normally json fields are converted to xml as follows:

<field2 type="string">hai</field2>

But when json field names contain chars that are legal json but illegal xml, the .NET json reader builds out the element as follows to generate legal xml:

<a:item xmlns:a="item" item="$field1" type="string">hai</a:item>

The mono version does not do this and blows up. Running Mono 2.10.8.1 on Ubuntu 12.04 LTS Server Edition 64 bit.

[Test]
public void should_parse_field_names_with_illegal_xml_chars()
{

    var json = new MemoryStream(Encoding.ASCII.GetBytes(
        "{" +
            "\"$field1\": \"oh\"," + 
            "\"field2\": \"hai\"" + 
        "}"));
    var document = XDocument.Load(JsonReaderWriterFactory.CreateJsonReader(json, new XmlDictionaryReaderQuotas()));
    document.ToString(SaveOptions.DisableFormatting).ShouldEqual(
    "<root type=\"object\">" + 
        "<a:item xmlns:a=\"item\" item=\"$field1\" type=\"string\">oh</a:item>" + 
        "<field2 type=\"string\">hai</field2>" + 
    "</root>");

}


Reference: https://bugzilla.xamarin.com/show_bug.cgi?id=18105