/// <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(); }