Esempio n. 1
0
 public void ProcessingInstructions ()
 {
     MemoryStream ms = new MemoryStream ();
     XmlDictionaryWriter w = XmlDictionaryWriter.CreateBinaryWriter (ms, null, null);
     w.WriteStartDocument ();
     w.WriteProcessingInstruction ("myPI", "myValue");
 }
 /// <summary>
 /// Writes out a processing instruction with a space between the name and text as follows: &lt;?name text?>.
 /// </summary>
 /// <param name="name">The name of the processing instruction.</param>
 /// <param name="text">The text to include in the processing instruction.</param>
 public override void WriteProcessingInstruction(string name, string text)
 {
     _innerWriter.WriteProcessingInstruction(name, text);
     if (_tracingWriter != null)
     {
         _tracingWriter.WriteProcessingInstruction(name, text);
     }
 }
 public override void WriteProcessingInstruction(string name, string text)
 {
     _innerWriter.WriteProcessingInstruction(name, text);
 }
        public void CloseWriteAfter()
        {
            xw.WriteElementString("foo", "bar");
            xw.Close();

            // WriteEndElement and WriteStartDocument aren't tested here because
            // they will always throw different exceptions besides 'The Writer is closed.'
            // and there are already tests for those exceptions.

            try
            {
                xw.WriteCData("foo");
                Assert.Fail("WriteCData after Close Should have thrown an InvalidOperationException.");
            }
            catch (InvalidOperationException)
            {
                // Don't rely on English message assertion.
                // It is enough to check an exception occurs.
//				Assert.AreEqual ("Exception message is incorrect.", "The Writer is closed.", e.Message);
            }

            try
            {
                xw.WriteComment("foo");
                Assert.Fail("WriteComment after Close Should have thrown an InvalidOperationException.");
            }
            catch (InvalidOperationException)
            {
//				Assert.AreEqual ("Exception message is incorrect.", "The Writer is closed.", e.Message);
            }

            try
            {
                xw.WriteProcessingInstruction("foo", "bar");
                Assert.Fail("WriteProcessingInstruction after Close Should have thrown an InvalidOperationException.");
            }
            catch (InvalidOperationException)
            {
//				Assert.AreEqual ("Exception message is incorrect.", "The Writer is closed.", e.Message);
            }

            try
            {
                xw.WriteStartElement("foo", "bar", "baz");
                Assert.Fail("WriteStartElement after Close Should have thrown an InvalidOperationException.");
            }
            catch (InvalidOperationException)
            {
//				Assert.AreEqual ("Exception message is incorrect.", "The Writer is closed.", e.Message);
            }

            try
            {
                xw.WriteAttributeString("foo", "bar");
                Assert.Fail("WriteAttributeString after Close Should have thrown an InvalidOperationException.");
            }
            catch (InvalidOperationException)
            {
//				Assert.AreEqual ("Exception message is incorrect.", "The Writer is closed.", e.Message);
            }

            try
            {
                xw.WriteString("foo");
                Assert.Fail("WriteString after Close Should have thrown an InvalidOperationException.");
            }
            catch (InvalidOperationException)
            {
//				Assert.AreEqual ("Exception message is incorrect.", "The Writer is closed.", e.Message);
            }
        }
Esempio n. 5
0
 public void WriteProcessingInstruction()
 {
     // since this method accepts case-insensitive "XML",
     // it throws ArgumentException.
     w.WriteProcessingInstruction("T", "D");
 }
Esempio n. 6
0
        public static async Task WriteNodeAsync(XmlDictionaryWriter writer, XmlReader reader, bool defattr)
        {
            char[]    writeNodeBuffer     = null;
            const int WriteNodeBufferSize = 1024;

            if (null == reader)
            {
                throw new ArgumentNullException(nameof(reader));
            }

            bool canReadChunk = reader.CanReadValueChunk;
            int  d            = reader.NodeType == XmlNodeType.None ? -1 : reader.Depth;

            do
            {
                switch (reader.NodeType)
                {
                case XmlNodeType.Element:
                    writer.WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI);
                    writer.WriteAttributes(reader, defattr);
                    if (reader.IsEmptyElement)
                    {
                        writer.WriteEndElement();
                        break;
                    }
                    break;

                case XmlNodeType.Text:
                    if (canReadChunk)
                    {
                        if (writeNodeBuffer == null)
                        {
                            writeNodeBuffer = new char[WriteNodeBufferSize];
                        }
                        int read;
                        while ((read = reader.ReadValueChunk(writeNodeBuffer, 0, WriteNodeBufferSize)) > 0)
                        {
                            writer.WriteChars(writeNodeBuffer, 0, read);
                        }
                    }
                    else
                    {
                        writer.WriteString(await reader.GetValueAsync());
                    }
                    break;

                case XmlNodeType.Whitespace:
                case XmlNodeType.SignificantWhitespace:
                    writer.WriteWhitespace(await reader.GetValueAsync());
                    break;

                case XmlNodeType.CDATA:
                    writer.WriteCData(await reader.GetValueAsync());
                    break;

                case XmlNodeType.EntityReference:
                    writer.WriteEntityRef(reader.Name);
                    break;

                case XmlNodeType.XmlDeclaration:
                case XmlNodeType.ProcessingInstruction:
                    writer.WriteProcessingInstruction(reader.Name, await reader.GetValueAsync());
                    break;

                case XmlNodeType.DocumentType:
                    writer.WriteDocType(reader.Name, reader.GetAttribute("PUBLIC"), reader.GetAttribute("SYSTEM"), await reader.GetValueAsync());
                    break;

                case XmlNodeType.Comment:
                    writer.WriteComment(await reader.GetValueAsync());
                    break;

                case XmlNodeType.EndElement:
                    writer.WriteFullEndElement();
                    break;
                }
            } while (await reader.ReadAsync() && (d < reader.Depth || (d == reader.Depth && reader.NodeType == XmlNodeType.EndElement)));
        }
        protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
        {
            try
            {
                do
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:
                        writer.WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI);
                        for (int i = 0; i < reader.AttributeCount; i++)
                        {
                            reader.MoveToAttribute(i);
                            writer.WriteAttributeString(reader.LocalName, reader.NamespaceURI, reader.Value.Replace(sourcePattern, targetPattern));
                        }
                        reader.MoveToElement();
                        if (reader.IsEmptyElement)
                        {
                            writer.WriteEndElement();
                        }
                        break;

                    case XmlNodeType.Text:
                        writer.WriteString(reader.Value.Replace(sourcePattern, targetPattern));
                        break;

                    case XmlNodeType.Whitespace:
                    case XmlNodeType.SignificantWhitespace:
                        writer.WriteWhitespace(reader.Value);
                        break;

                    case XmlNodeType.CDATA:
                        writer.WriteCData(reader.Value);
                        break;

                    case XmlNodeType.EntityReference:
                        writer.WriteEntityRef(reader.Name);
                        break;

                    case XmlNodeType.XmlDeclaration:
                    case XmlNodeType.ProcessingInstruction:
                        writer.WriteProcessingInstruction(reader.Name, reader.Value);
                        break;

                    case XmlNodeType.DocumentType:
                        writer.WriteDocType(reader.Name, reader.GetAttribute("PUBLIC"), reader.GetAttribute("SYSTEM"), reader.Value);
                        break;

                    case XmlNodeType.Comment:
                        writer.WriteComment(reader.Value);
                        break;

                    case XmlNodeType.EndElement:
                        writer.WriteFullEndElement();
                        break;
                    }
                }while (reader.Read());
                writer.Flush();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw;
            }
        }