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
- Span.cs
- AutoGeneratedField.cs
- DataColumnMapping.cs
- DateTimeSerializationSection.cs
- BrowserCapabilitiesCodeGenerator.cs
- path.cs
- HtmlInputButton.cs
- SponsorHelper.cs
- WindowsStatic.cs
- TraceData.cs
- SymbolType.cs
- MultipartContentParser.cs
- ApplicationInfo.cs
- HostedImpersonationContext.cs
- SqlNode.cs
- COM2PropertyDescriptor.cs
- WebServiceErrorEvent.cs
- RuntimeResourceSet.cs
- Error.cs
- ErrorFormatter.cs
- WindowsMenu.cs
- WindowsSlider.cs
- Delegate.cs
- QilIterator.cs
- UnmanagedMarshal.cs
- SafeFreeMibTable.cs
- DbExpressionVisitor_TResultType.cs
- ValueUtilsSmi.cs
- TreeViewImageIndexConverter.cs
- RemoteX509AsymmetricSecurityKey.cs
- TextReader.cs
- OleDbReferenceCollection.cs
- ResponseBodyWriter.cs
- ValueConversionAttribute.cs
- Int16AnimationUsingKeyFrames.cs
- BitVector32.cs
- UpdatePanelTrigger.cs
- DateTimeFormatInfo.cs
- FilterQueryOptionExpression.cs
- PersistStreamTypeWrapper.cs
- SignatureConfirmationElement.cs
- DetailsViewDeletedEventArgs.cs
- PathGeometry.cs
- ConnectionOrientedTransportElement.cs
- ToolStripDropDown.cs
- System.Data_BID.cs
- WindowsBrush.cs
- COAUTHINFO.cs
- BindingMemberInfo.cs
- MediaScriptCommandRoutedEventArgs.cs
- ThreadStartException.cs
- ViewBox.cs
- Thread.cs
- BindUriHelper.cs
- TextEffectCollection.cs
- PageAdapter.cs
- ConnectorRouter.cs
- PrintPreviewDialog.cs
- XmlSchemaComplexContentExtension.cs
- hwndwrapper.cs
- SQLInt32Storage.cs
- UndirectedGraph.cs
- UnicodeEncoding.cs
- Baml2006KnownTypes.cs
- GroupBoxRenderer.cs
- ProjectionPathSegment.cs
- EntityDataSourceDataSelectionPanel.cs
- PenContext.cs
- StubHelpers.cs
- Table.cs
- ImageClickEventArgs.cs
- StoreAnnotationsMap.cs
- SourceFileInfo.cs
- WebPartCloseVerb.cs
- SQLDouble.cs
- LocalizabilityAttribute.cs
- WebPartRestoreVerb.cs
- TypeBrowser.xaml.cs
- UiaCoreProviderApi.cs
- SHA384Cng.cs
- GenerateScriptTypeAttribute.cs
- UpdateTracker.cs
- OpenTypeCommon.cs
- LocalizationCodeDomSerializer.cs
- DynamicPropertyHolder.cs
- MemberInfoSerializationHolder.cs
- ProviderMetadata.cs
- HtmlInputCheckBox.cs
- Pair.cs
- RayMeshGeometry3DHitTestResult.cs
- TemplateNameScope.cs
- ConditionCollection.cs
- SqlConnection.cs
- Timer.cs
- AppSettingsExpressionBuilder.cs
- TextReader.cs
- Send.cs
- EntityViewGenerationConstants.cs
- SqlUdtInfo.cs
- PropertyFilterAttribute.cs