Пример #1
0
        /// <summary>
        /// Serializes an element into a stream.
        /// </summary>
        /// <param name="stream">The stream to write to.</param>
        /// <param name="element">The element to serialize.</param>
        /// <param name="serializeInnerContent">True to serialize inner content. If false only the opening and closing
        /// tags will be serialized along with attributes.</param>
        public static void SerializeElement(Stream stream, ResourceStringContent element, bool serializeInnerContent)
        {
            IXliffDataProvider provider;
            IEnumerable<ElementInfo> children;
            XliffWriter writer;
            XmlWriterSettings settings;

            Debug.Assert(element != null, "The element should not be null.");
            Debug.Assert(element.Parent != null, "The element parent should not be null.");
            Debug.Assert(stream != null, "The stream should not be null.");

            settings = new XmlWriterSettings();
            settings.OmitXmlDeclaration = true;

            writer = new XliffWriter();
            writer.writer = XmlWriter.Create(stream, settings);
            writer.writer.WriteStartDocument();

            provider = element.Parent;
            children = provider.GetXliffChildren();
            foreach (ElementInfo pair in children)
            {
                if (pair.Element == element)
                {
                    // Don't use the namespace or prefix otherwise they'll be output for fragments. The namespaces
                    // should be written to the root xliff node so they'll be ok for the final document.
                    writer.SerializeImpl(
                                         pair.LocalName,
                                         null,
                                         null,
                                         pair.Element,
                                         null,
                                         serializeInnerContent);
                    break;
                }
            }

            writer.writer.WriteEndDocument();
            writer.writer.Flush();
        }