Exemple #1
0
        // Dump text representation of baml file to console
        private static void DumpText(string filename)
        {
            // Load the baml file using the BamlReader and display its contents to the console.
            Stream fs = LoadTestFile(filename);

            Reader = new BamlReaderWrapper(fs);
            int depth = 0;

            while (Reader.Read())
            {
                // Set depth and indent accordingly
                switch (Reader.NodeType)
                {
                case "StartElement":
                case "StartComplexProperty":
                case "StartConstructor":
                    depth++;
                    break;
                }
                Indent(depth);
                Console.Write(Reader.NodeType.ToString());

                // Write additional information
                switch (Reader.NodeType)
                {
                case "StartElement":
                case "StartComplexProperty":
                case "StartConstructor":
                    Console.Write("  ");
                    WritePrefixedName();
                    break;

                case "EndElement":
                case "EndComplexProperty":
                case "EndConstructor":
                    depth--;
                    Console.Write("  ");
                    WritePrefixedName();
                    break;

                case "LiteralContent":
                case "Text":
                    Console.Write(" \"" + Reader.Value + "\"");
                    break;

                case "PIMapping":
                    Console.Write(" XmlNamespace=" + Reader.XmlNamespace +
                                  " ClrNamespace=" + Reader.ClrNamespace +
                                  " Assembly=" + Reader.AssemblyName);
                    break;
                }

                Console.WriteLine("");

                if (Reader.HasProperties)
                {
                    Reader.MoveToFirstProperty();
                    do
                    {
                        Indent(depth + 2);
                        Console.Write(Reader.NodeType.ToString());
                        Console.Write("  ");
                        WritePrefixedName();
                        if (Verbose)
                        {
                            Console.WriteLine("  Value=" + Reader.Value);
                        }
                        else
                        {
                            Console.WriteLine(" = " + Reader.Value);
                        }
                    }while (Reader.MoveToNextProperty());
                }
            }

            Reader.Close();
        }
Exemple #2
0
        // Read in one baml file using BamlReader and write to another baml file using BamlWriter
        private static void DumpToNewBaml(string filename)
        {
            // Load the baml file using the BamlReader and display its contents to the console.
            Stream fs = LoadTestFile(filename);

            Reader = new BamlReaderWrapper(fs);
            string outFile = filename.Substring(0, filename.Length - 5) + "_.baml";

            System.IO.Stream  stream = File.OpenWrite(outFile);
            BamlWriterWrapper writer = new BamlWriterWrapper(stream);

            while (Reader.Read())
            {
                switch (Reader.NodeType)
                {
                case "StartDocument":
                    writer.WriteStartDocument();
                    break;

                case "EndDocument":
                    writer.WriteEndDocument();
                    break;

                case "StartElement":
                    writer.WriteStartElement(Reader.AssemblyName, Reader.Name, Reader.IsInjected, Reader.CreateUsingTypeConverter);
                    break;

                case "StartComplexProperty":
                    writer.WriteStartComplexProperty(
                        Reader.AssemblyName,
                        Reader.Name.Substring(0, Reader.Name.LastIndexOf('.')),
                        Reader.LocalName);
                    break;

                case "EndElement":
                    writer.WriteEndElement();
                    break;

                case "EndComplexProperty":
                    writer.WriteEndComplexProperty();
                    break;

                case "StartConstructor":
                    writer.WriteStartConstructor();
                    break;

                case "EndConstructor":
                    writer.WriteEndConstructor();
                    break;

                case "LiteralContent":
                    writer.WriteLiteralContent(Reader.Value);
                    break;

                case "IncludeReference":
                    Console.Write(" \"" + Reader.Value + "\"");
                    break;

                case "Text":
                    writer.WriteText(Reader.Value, Reader.TypeConverterAssemblyName, Reader.TypeConverterName);
                    break;

                case "Event":
                    writer.WriteEvent(Reader.Name, Reader.Value);
                    break;

                case "RoutedEvent":
                    writer.WriteRoutedEvent(
                        Reader.AssemblyName,
                        Reader.Name.Substring(0, Reader.Name.LastIndexOf('.')),
                        Reader.LocalName,
                        Reader.Value);
                    break;

                case "PIMapping":
                    writer.WritePIMapping(Reader.XmlNamespace,
                                          Reader.ClrNamespace,
                                          Reader.AssemblyName);
                    break;
                }

                if (Reader.HasProperties)
                {
                    Reader.MoveToFirstProperty();
                    do
                    {
                        if (Reader.NodeType == "ConnectionId")
                        {
                            writer.WriteConnectionId(Reader.ConnectionId);
                        }
                        else if (Reader.NodeType == "Property")
                        {
                            writer.WriteProperty(Reader.AssemblyName,
                                                 Reader.Name.Substring(0, Reader.Name.LastIndexOf('.')),
                                                 Reader.LocalName,
                                                 Reader.Value,
                                                 Reader.AttributeUsage);
                        }
                        else if (Reader.NodeType == "DefAttribute")
                        {
                            writer.WriteDefAttribute(Reader.Name,
                                                     Reader.Value);
                        }
                        else if (Reader.NodeType == "PresentationOptionsAttribute")
                        {
                            writer.WritePresentationOptionsAttribute(Reader.Name,
                                                                     Reader.Value);
                        }
                        else if (Reader.NodeType == "ContentProperty")
                        {
                            writer.WriteContentProperty(Reader.AssemblyName,
                                                        Reader.Name.Substring(0, Reader.Name.LastIndexOf('.')),
                                                        Reader.LocalName);
                        }
                        else
                        {
                            writer.WriteXmlnsProperty(Reader.LocalName,
                                                      Reader.Value);
                        }
                    }while (Reader.MoveToNextProperty());
                }
            }

            Reader.Close();
            writer.Close();
        }