Ejemplo n.º 1
0
        private static void WriteJson(XmlNode[] nodes, TextWriter writer)
        {
            IDictionary <string, List <XmlNode> > elems = XDocUtil.CollapseNodeList(nodes);
            bool firstOuter = true;

            foreach (KeyValuePair <string, List <XmlNode> > entry in elems)
            {
                if (!firstOuter)
                {
                    writer.Write(",");
                }
                writer.Write("{0}:", XDocUtil.EncodeXmlString(entry.Key));
                if (entry.Value.Count > 1)
                {
                    writer.Write("[");
                    bool firstInner = true;
                    foreach (XmlNode node in entry.Value)
                    {
                        if (!firstInner)
                        {
                            writer.Write(",");
                        }
                        if (node.NodeType == XmlNodeType.Text)
                        {
                            writer.Write(XDocUtil.EncodeXmlString(node.Value));
                        }
                        else
                        {
                            WriteJson(node, writer);
                        }
                        firstInner = false;
                    }
                    writer.Write("]");
                }
                else
                {
                    WriteJson(entry.Value[0], writer);
                }
                firstOuter = false;
            }
        }