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
- SrgsElementFactoryCompiler.cs
- DataListCommandEventArgs.cs
- TemplatePagerField.cs
- CodeExporter.cs
- RawStylusActions.cs
- ServiceKnownTypeAttribute.cs
- TableCell.cs
- DbParameterHelper.cs
- DataControlButton.cs
- ScrollProperties.cs
- UnknownWrapper.cs
- SafeSecurityHelper.cs
- SqlConnection.cs
- LicenseManager.cs
- securitycriticaldataClass.cs
- CodeEventReferenceExpression.cs
- DateTimeOffsetConverter.cs
- InternalEnumValidator.cs
- ValidationHelper.cs
- SqlErrorCollection.cs
- GridViewRow.cs
- URLAttribute.cs
- Model3DGroup.cs
- UniqueEventHelper.cs
- RestClientProxyHandler.cs
- DataBoundControlDesigner.cs
- ScrollableControl.cs
- SystemIPGlobalStatistics.cs
- DesignBindingEditor.cs
- WebBrowserHelper.cs
- TypedTableBase.cs
- FieldToken.cs
- X509Chain.cs
- PropertyGrid.cs
- Inflater.cs
- HttpChannelBindingToken.cs
- HostingEnvironmentSection.cs
- RegexMatch.cs
- Model3DCollection.cs
- SingleSelectRootGridEntry.cs
- NotFiniteNumberException.cs
- BaseDataListComponentEditor.cs
- TextSyndicationContentKindHelper.cs
- FocusTracker.cs
- ValidationEventArgs.cs
- ViewValidator.cs
- ClipboardProcessor.cs
- IPHostEntry.cs
- JulianCalendar.cs
- Soap.cs
- DataBinding.cs
- Screen.cs
- UserControlAutomationPeer.cs
- UriScheme.cs
- OrderPreservingMergeHelper.cs
- ObjectTag.cs
- XmlSerializerSection.cs
- QilVisitor.cs
- DllNotFoundException.cs
- ExcludePathInfo.cs
- COM2ICategorizePropertiesHandler.cs
- DocumentViewerBaseAutomationPeer.cs
- _Rfc2616CacheValidators.cs
- SQLMoneyStorage.cs
- DateTimeConstantAttribute.cs
- SettingsProperty.cs
- SystemIPInterfaceStatistics.cs
- _UncName.cs
- ProcessDesigner.cs
- FilterException.cs
- InheritanceRules.cs
- TranslateTransform.cs
- GridViewRowEventArgs.cs
- GcHandle.cs
- AuthenticationSection.cs
- OdbcTransaction.cs
- CompilationRelaxations.cs
- XmlDownloadManager.cs
- XmlSchemaException.cs
- Function.cs
- ControlBindingsConverter.cs
- ProviderBase.cs
- PolyQuadraticBezierSegment.cs
- HandlerBase.cs
- DateTimeConverter2.cs
- MdImport.cs
- Point3DKeyFrameCollection.cs
- HttpListener.cs
- SqlError.cs
- TreeViewHitTestInfo.cs
- DataViewSettingCollection.cs
- HttpCookie.cs
- ProfilePropertyNameValidator.cs
- ExceptionValidationRule.cs
- XPathNodeInfoAtom.cs
- EndpointDiscoveryMetadata.cs
- TextTreePropertyUndoUnit.cs
- DocumentScope.cs
- PointAnimationClockResource.cs
- RewritingPass.cs