Пример #1
0
        public unsafe static string CreateMediaLogXml(IntPtr *names, IntPtr *values)
        {
            IntPtr        name_ptr;
            IntPtr        value_ptr;
            StringBuilder result  = new StringBuilder();
            StringBuilder summary = new StringBuilder();

            System.Xml.XmlWriterSettings settings = new System.Xml.XmlWriterSettings();
            settings.OmitXmlDeclaration = true;
            System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(result, settings);

            for (int c = 0; names [c] != IntPtr.Zero; c++)
            {
                string value = Marshal.PtrToStringAnsi(values [c]).Replace(' ', '_');
                if (string.IsNullOrEmpty(value))
                {
                    value = "-";
                }
                summary.Append(value);
                summary.Append(" ");
            }
            summary.Length -= 1;

            writer.WriteStartElement("XML");
            writer.WriteElementString("Summary", summary.ToString());
            for (int c = 0; names [c] != IntPtr.Zero; c++)
            {
                string name  = Marshal.PtrToStringAnsi(names [c]);
                string value = Marshal.PtrToStringAnsi(values [c]).Replace(' ', '_');
                if (string.IsNullOrEmpty(value))
                {
                    value = "-";
                }
                writer.WriteElementString(name, value);
            }
            writer.WriteEndElement();

            writer.Flush();

            return(result.ToString());
        }
Пример #2
0
        public void Write(Mono.System.Xml.XmlWriter writer, Mono.System.Xml.XmlNamespaceManager namespaceManager)
        {
            XmlSerializerNamespaces nss = new XmlSerializerNamespaces();

            if (namespaceManager != null)
            {
                foreach (string name in namespaceManager)
                {
                    //xml and xmlns namespaces are added by default in namespaceManager.
                    //So we should ignore them
                    if (name != "xml" && name != "xmlns")
                    {
                        nss.Add(name, namespaceManager.LookupNamespace(name));
                    }
                }
            }

            if (Namespaces != null && Namespaces.Count > 0)
            {
                XmlQualifiedName [] qnames = Namespaces.ToArray();
                foreach (XmlQualifiedName qn in qnames)
                {
                    nss.Add(qn.Name, qn.Namespace);
                }
                string p    = String.Empty;
                bool   loop = true;
                for (int idx = 1; loop; idx++)
                {
                    loop = false;
                    foreach (XmlQualifiedName qn in qnames)
                    {
                        if (qn.Name == p)
                        {
                            p    = "q" + idx;
                            loop = true;
                            break;
                        }
                    }
                }
                nss.Add(p, XmlSchema.Namespace);
            }

            if (nss.Count == 0)
            {
                // Add the xml schema namespace. (It is done
                // only when no entry exists in Namespaces).
                nss.Add("xs", XmlSchema.Namespace);
                if (TargetNamespace != null && TargetNamespace.Length != 0)
                {
                    nss.Add("tns", TargetNamespace);
                }
            }

            XmlSchemaSerializer     xser   = new XmlSchemaSerializer();
            XmlSerializerNamespaces backup = Namespaces;

            try {
                Namespaces = null;
                xser.Serialize(writer, this, nss);
            } finally {
                Namespaces = backup;
            }
            writer.Flush();
        }
Пример #3
0
 public override void Flush()
 {
     writer.Flush();
 }