void AttributesToXml(BinaryDataTree tree, IO.XmlElementStream s)
        {
            if (NameValues == null || NameValues.Count <= 1)
            {
                return;
            }

            if (tree.DecompileAttributesWithTypeData)
            {
                using (s.EnterCursorBookmark("Attributes"))
                {
                    for (int x = 1; x < NameValues.Count; x++)
                    {
                        var name_value = NameValues[x];

                        using (s.EnterCursorBookmark(name_value.Name))
                            name_value.Variant.ToStream(s);
                    }
                }
            }
            else
            {
                for (int x = 1; x < NameValues.Count; x++)
                {
                    var name_value = NameValues[x];
                    name_value.Variant.ToStreamAsAttribute(name_value.Name, s);
                }
            }
        }
        public XmlDocument ToXmlDocument(BinaryDataTree tree)
        {
            Contract.Requires(RootNode != null);
            Contract.Ensures(Contract.Result <XmlDocument>() != null);

            string root_name = RootNode.NodeName;
            var    s         = IO.XmlElementStream.CreateForWrite(root_name);

            RootNode.ToXml(tree, s);

            return(s.Document);
        }
        void ChildrenToXml(BinaryDataTree tree, IO.XmlElementStream s)
        {
            if (Children == null || Children.Count == 0)
            {
                return;
            }

            foreach (var child in Children)
            {
                using (s.EnterCursorBookmark(child.NodeName))
                    child.ToXml(tree, s);
            }
        }
 internal void ToXml(BinaryDataTree tree, IO.XmlElementStream s)
 {
     AttributesToXml(tree, s);
     ChildrenToXml(tree, s);
     InnerTextToXml(s);
 }