/// <summary> /// Parse into a new instance <typeparam name="T"/> without manually creating a XmlReadBuffer /// </summary> /// <param name="span">Text to parse</param> /// <param name="cdataMode"><see cref="m_cdataMode"/></param> /// <typeparam name="T">Type to parse</typeparam> /// <returns>The created instance</returns> public static T ReadStatic <T>(ReadOnlySpan <char> span, CDataMode cdataMode = CDataMode.On) where T : IXmlSerializable, new() { var reader = new XmlReadBuffer { m_cdataMode = cdataMode }; return(reader.Read <T>(span)); }
internal Log4NetTextFormatterOptions(IFormatProvider?formatProvider, CDataMode cDataMode, XmlQualifiedName?xmlNamespace, XmlWriterSettings xmlWriterSettings, PropertyFilter filterProperty, ExceptionFormatter formatException) { FormatProvider = formatProvider; CDataMode = cDataMode; XmlNamespace = xmlNamespace; XmlWriterSettings = xmlWriterSettings; FilterProperty = filterProperty; FormatException = formatException; }
/// <summary> /// Actual XmlWriteBuffer constructor /// </summary> /// <param name="_">blank parameter</param> // ReSharper disable once UnusedParameter.Local private XmlWriteBuffer(int _ = 0) { m_pendingNodeHeadClose = false; m_buffer = ArrayPool <char> .Shared.Rent(1024); m_bufferSpan = m_buffer; m_currentOffset = 0; m_cdataMode = CDataMode.On; }
public static void SerializeStringBody(CDataMode cdataMode) { var truth = new StringBody() { m_fullBody = "asdjhasjkdhakjsdhjkahsdjhkasdhasd<>&&" }; var result = XmlWriteBuffer.SerializeStatic(truth, cdataMode); var deserialized = XmlReadBuffer.ReadStatic <StringBody>(result, cdataMode); Assert.Equal(truth.m_fullBody, deserialized.m_fullBody); }
public Task MessageCDataMode(CDataMode mode, bool needsEscaping) { // Arrange using var output = new StringWriter(); var logEvent = CreateLogEvent(messageTemplate: needsEscaping ? ">> Hello from Serilog <<" : "Hello from Serilog"); var formatter = new Log4NetTextFormatter(options => options.UseCDataMode(mode)); // Act formatter.Format(logEvent, output); // Assert return(Verify(output).UseParameters(mode, needsEscaping)); }
public static void SerializeStringBodies(CDataMode cdataMode) { var truth = new StringBodies { m_a = "blah1<>&&", m_b = "blah2", m_null = null, m_empty = string.Empty }; var result = XmlWriteBuffer.SerializeStatic(truth, cdataMode); var deserialized = XmlReadBuffer.ReadStatic <StringBodies>(result, cdataMode); Assert.Equal(truth.m_a, deserialized.m_a); Assert.Equal(truth.m_b, deserialized.m_b); //Assert.Equal(truth.m_null, deserialized.m_null); // todo: do we want to avoid writing nulls?? currently empty string Assert.Equal(truth.m_empty, deserialized.m_empty); }
/// <summary> /// Serialize a baseclass of <see cref="IXmlSerializable"/> to XML text /// </summary> /// <param name="obj">The object to serialize</param> /// <param name="useCData">Should text be written as CDATA</param> /// <returns>Serialized XML</returns> public static string SerializeStatic(IXmlSerializable obj, CDataMode cdataMode = CDataMode.On) { if (obj == null) { throw new ArgumentNullException(nameof(obj)); } var writer = Create(); writer.m_cdataMode = cdataMode; try { obj.Serialize(ref writer); var str = writer.ToStr(); return(str); } finally { writer.Dispose(); } }