public void TestShouldNotEscape() { Dictionary<char, string> mapping = new Dictionary<char, string>(); mapping.Add('(', "<"); mapping.Add(')', ">"); StringWriter sw = new StringWriter(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; settings.Indent = false; CharacterMappingXmlWriter writer = new CharacterMappingXmlWriter(XmlWriter.Create(sw, settings), mapping); writer.WriteElementString("foo", "(%= bar%)"); writer.Close(); Assert.IsTrue(sw.ToString() == "<foo><%= bar%></foo>"); }
public void TestShouldReplaceInText2() { Dictionary<char, string> mapping = new Dictionary<char, string>(); mapping.Add('f', "FOO"); mapping.Add('z', "ZzZ"); StringWriter sw = new StringWriter(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; settings.Indent = false; CharacterMappingXmlWriter writer = new CharacterMappingXmlWriter(XmlWriter.Create(sw, settings), mapping); writer.WriteElementString("foo", "abcd z efgh f zzz."); writer.Close(); Assert.IsTrue(sw.ToString() == "<foo>abcd ZzZ eFOOgh FOO ZzZZzZZzZ.</foo>"); }
public void TestShouldReplaceInAttribute() { Dictionary<char, string> mapping = new Dictionary<char, string>(); mapping.Add('f', "FOO"); StringWriter sw = new StringWriter(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; settings.Indent = false; CharacterMappingXmlWriter writer = new CharacterMappingXmlWriter(XmlWriter.Create(sw, settings), mapping); writer.WriteStartElement("foo"); writer.WriteAttributeString("bar", "fghj"); writer.WriteEndElement(); writer.Close(); Assert.IsTrue(sw.ToString() == "<foo bar=\"FOOghj\" />"); }
/// <summary> /// Transforms to XmlWriter. /// </summary> protected void TransformToWriter(XmlInput defaultDocument, XsltArgumentList xsltArgs, XmlWriter targetWriter) { XmlWriter xmlWriter; if (this.supportCharacterMaps && this.characterMap != null && this.characterMap.Count > 0) { xmlWriter = new CharacterMappingXmlWriter(targetWriter, this.characterMap); } else { xmlWriter = targetWriter; } if (this.enforceXHTMLOutput) { xmlWriter = new XhtmlWriter(xmlWriter); } XsltArgumentList args = AddExsltExtensionObjectsSync(xsltArgs); XmlReader xmlReader = defaultDocument.source as XmlReader; if (xmlReader != null) { this.compiledTransform.Transform(xmlReader, args, xmlWriter, defaultDocument.resolver); return; } IXPathNavigable nav = defaultDocument.source as IXPathNavigable; if (nav != null) { if (defaultDocument.resolver is DefaultXmlResolver) { this.compiledTransform.Transform(nav, args, xmlWriter); } else { TransformIXPathNavigable(nav, args, xmlWriter, defaultDocument.resolver); } return; } string str = defaultDocument.source as string; if (str != null) { using (XmlReader reader = XmlReader.Create(str, GetReaderSettings(defaultDocument))) { this.compiledTransform.Transform(reader, args, xmlWriter, defaultDocument.resolver); } return; } Stream strm = defaultDocument.source as Stream; if (strm != null) { using (XmlReader reader = XmlReader.Create(strm, GetReaderSettings(defaultDocument))) { this.compiledTransform.Transform(reader, args, xmlWriter, defaultDocument.resolver); } return; } TextReader txtReader = defaultDocument.source as TextReader; if (txtReader != null) { using (XmlReader reader = XmlReader.Create(txtReader, GetReaderSettings(defaultDocument))) { this.compiledTransform.Transform(reader, args, xmlWriter, defaultDocument.resolver); } return; } throw new Exception("Unexpected XmlInput"); }