Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / WriterOutput.cs / 1305376 / WriterOutput.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml.Xsl.XsltOld { using Res = System.Xml.Utils.Res; using System; using System.Diagnostics; using System.Xml; using System.Xml.XPath; using System.Collections; internal class WriterOutput : RecordOutput { private XmlWriter writer; private Processor processor; internal WriterOutput(Processor processor, XmlWriter writer) { if (writer == null) { throw new ArgumentNullException("writer"); } this.writer = writer; this.processor = processor; } // RecordOutput interface method implementation // public Processor.OutputResult RecordDone(RecordBuilder record) { BuilderInfo mainNode = record.MainNode; switch (mainNode.NodeType) { case XmlNodeType.Element: this.writer.WriteStartElement(mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI); WriteAttributes(record.AttributeList, record.AttributeCount); if (mainNode.IsEmptyTag) { this.writer.WriteEndElement(); } break; case XmlNodeType.Text: case XmlNodeType.Whitespace: case XmlNodeType.SignificantWhitespace: this.writer.WriteString(mainNode.Value); break; case XmlNodeType.CDATA: Debug.Assert(false, "XSLT never gives us CDATA"); this.writer.WriteCData(mainNode.Value); break; case XmlNodeType.EntityReference: this.writer.WriteEntityRef(mainNode.LocalName); break; case XmlNodeType.ProcessingInstruction: this.writer.WriteProcessingInstruction(mainNode.LocalName, mainNode.Value); break; case XmlNodeType.Comment: this.writer.WriteComment(mainNode.Value); break; case XmlNodeType.Document: break; case XmlNodeType.DocumentType: this.writer.WriteRaw(mainNode.Value); break; case XmlNodeType.EndElement: this.writer.WriteFullEndElement(); break; case XmlNodeType.None: case XmlNodeType.Attribute: case XmlNodeType.Entity: case XmlNodeType.Notation: case XmlNodeType.DocumentFragment: case XmlNodeType.EndEntity: break; default: Debug.Fail("Invalid NodeType on output: " + mainNode.NodeType); break; } record.Reset(); return Processor.OutputResult.Continue; } public void TheEnd() { this.writer.Flush(); this.writer = null; } private void WriteAttributes(ArrayList list, int count) { Debug.Assert(list.Count >= count); for (int attrib = 0; attrib < count; attrib ++) { Debug.Assert(list[attrib] is BuilderInfo); BuilderInfo attribute = (BuilderInfo) list[attrib]; this.writer.WriteAttributeString(attribute.Prefix, attribute.LocalName, attribute.NamespaceURI, attribute.Value); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml.Xsl.XsltOld { using Res = System.Xml.Utils.Res; using System; using System.Diagnostics; using System.Xml; using System.Xml.XPath; using System.Collections; internal class WriterOutput : RecordOutput { private XmlWriter writer; private Processor processor; internal WriterOutput(Processor processor, XmlWriter writer) { if (writer == null) { throw new ArgumentNullException("writer"); } this.writer = writer; this.processor = processor; } // RecordOutput interface method implementation // public Processor.OutputResult RecordDone(RecordBuilder record) { BuilderInfo mainNode = record.MainNode; switch (mainNode.NodeType) { case XmlNodeType.Element: this.writer.WriteStartElement(mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI); WriteAttributes(record.AttributeList, record.AttributeCount); if (mainNode.IsEmptyTag) { this.writer.WriteEndElement(); } break; case XmlNodeType.Text: case XmlNodeType.Whitespace: case XmlNodeType.SignificantWhitespace: this.writer.WriteString(mainNode.Value); break; case XmlNodeType.CDATA: Debug.Assert(false, "XSLT never gives us CDATA"); this.writer.WriteCData(mainNode.Value); break; case XmlNodeType.EntityReference: this.writer.WriteEntityRef(mainNode.LocalName); break; case XmlNodeType.ProcessingInstruction: this.writer.WriteProcessingInstruction(mainNode.LocalName, mainNode.Value); break; case XmlNodeType.Comment: this.writer.WriteComment(mainNode.Value); break; case XmlNodeType.Document: break; case XmlNodeType.DocumentType: this.writer.WriteRaw(mainNode.Value); break; case XmlNodeType.EndElement: this.writer.WriteFullEndElement(); break; case XmlNodeType.None: case XmlNodeType.Attribute: case XmlNodeType.Entity: case XmlNodeType.Notation: case XmlNodeType.DocumentFragment: case XmlNodeType.EndEntity: break; default: Debug.Fail("Invalid NodeType on output: " + mainNode.NodeType); break; } record.Reset(); return Processor.OutputResult.Continue; } public void TheEnd() { this.writer.Flush(); this.writer = null; } private void WriteAttributes(ArrayList list, int count) { Debug.Assert(list.Count >= count); for (int attrib = 0; attrib < count; attrib ++) { Debug.Assert(list[attrib] is BuilderInfo); BuilderInfo attribute = (BuilderInfo) list[attrib]; this.writer.WriteAttributeString(attribute.Prefix, attribute.LocalName, attribute.NamespaceURI, attribute.Value); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HelpProvider.cs
- Pens.cs
- PropVariant.cs
- XmlWellformedWriter.cs
- WinEventQueueItem.cs
- UndoManager.cs
- FileLoadException.cs
- Evidence.cs
- MimeTypeAttribute.cs
- DetailsViewRowCollection.cs
- DataObjectEventArgs.cs
- OutKeywords.cs
- WebHttpSecurity.cs
- ArgumentNullException.cs
- CatalogPartChrome.cs
- WebCategoryAttribute.cs
- ProtocolViolationException.cs
- SerializationException.cs
- DataColumnPropertyDescriptor.cs
- RegisteredArrayDeclaration.cs
- odbcmetadatafactory.cs
- PackageProperties.cs
- DbConnectionPoolGroup.cs
- ByteStack.cs
- DSASignatureDeformatter.cs
- XmlTextAttribute.cs
- DiscriminatorMap.cs
- Lasso.cs
- BitmapEffectrendercontext.cs
- Int32Rect.cs
- XmlAttributeCache.cs
- RelationshipConstraintValidator.cs
- NumberEdit.cs
- PartitionResolver.cs
- TargetInvocationException.cs
- OleDbMetaDataFactory.cs
- ProgressPage.cs
- Events.cs
- Freezable.cs
- DtrList.cs
- KnownBoxes.cs
- RequestStatusBarUpdateEventArgs.cs
- XmlAnyAttributeAttribute.cs
- KeyFrames.cs
- UnsafeNativeMethodsMilCoreApi.cs
- ServiceInstallComponent.cs
- ApplicationBuildProvider.cs
- SdlChannelSink.cs
- XmlSchemaValidationException.cs
- CodeNamespaceCollection.cs
- AssemblyResourceLoader.cs
- UrlMapping.cs
- PathData.cs
- SettingsAttributes.cs
- QilXmlWriter.cs
- RelationshipEntry.cs
- Visual3D.cs
- StateDesigner.Layouts.cs
- SkewTransform.cs
- StreamHelper.cs
- SoapElementAttribute.cs
- AuthenticationModuleElement.cs
- ClaimComparer.cs
- ContextProperty.cs
- ProcessingInstructionAction.cs
- CurrentTimeZone.cs
- Timeline.cs
- WebPartConnectionsCancelEventArgs.cs
- XsdCachingReader.cs
- NativeMethods.cs
- FastEncoderStatics.cs
- X509Certificate.cs
- _ChunkParse.cs
- TemplateControlCodeDomTreeGenerator.cs
- TreeViewEvent.cs
- ExportOptions.cs
- SelectionEditingBehavior.cs
- Composition.cs
- TimeSpanOrInfiniteConverter.cs
- SkewTransform.cs
- BinaryMethodMessage.cs
- TreePrinter.cs
- SmtpReplyReader.cs
- SamlDoNotCacheCondition.cs
- LineGeometry.cs
- WebEventTraceProvider.cs
- ContextStaticAttribute.cs
- TokenBasedSetEnumerator.cs
- InputQueue.cs
- FtpRequestCacheValidator.cs
- DataGridViewCellEventArgs.cs
- XmlNamedNodeMap.cs
- PrimitiveXmlSerializers.cs
- CodeRemoveEventStatement.cs
- SerializableAttribute.cs
- AutomationElementCollection.cs
- DynamicFilterExpression.cs
- ActivityBuilderHelper.cs
- TriState.cs
- AddInAttribute.cs