예제 #1
0
파일: Serialize.cs 프로젝트: krwq/XmlPrime
        /// <summary>
        /// Performs the serialization.
        /// </summary>
        /// <returns>
        /// Returns <see langword="true" /> if the task successfully executed; otherwise, <see langword="false" />.
        /// </returns>
        protected override bool Process()
        {
            if (PopulateSchemaSet() == false)
            {
                return(false);
            }

            var documentSet = GetDocumentSet();

            var contextItem = LoadContextItem(documentSet, Input);

            if (contextItem == null)
            {
                return(false);
            }

            var serializationSettings = new XdmWriterSettings();

            if (!SetSerializationSettings(serializationSettings))
            {
                return(false);
            }

            using (Stream outputStream = File.Create(Output.ItemSpec))
                XdmWriter.Serialize(contextItem.CreateNavigator(), outputStream, serializationSettings);

            OutputFiles = new[] { Output };

            return(true);
        }
예제 #2
0
        private XmlWriter CreateResultDocument([NotNull] XdmWriterSettings settings,
                                               [NotNull] FileInfo fileInfo)
        {
            Assert.ArgumentNotNull(settings, "settings");
            Assert.ArgumentNotNull(fileInfo, "fileInfo");

            _task.Log.LogMessage(MessageImportance.Low, Resources.CreateResultDocument, fileInfo.FullName);
            var taskItem = new TaskItem(fileInfo.FullName);

            var directory = fileInfo.Directory;

            if (directory != null && directory.Exists == false)
            {
                directory.Create();
            }
            var localPath = fileInfo.FullName;
            var stream    = GetTemporaryFile(localPath);
            var name      = stream.Name;

            taskItem.SetMetadata("MimeType", settings.MediaType ?? string.Empty);
            taskItem.SetMetadata("Encoding", settings.Encoding);

            // Record that, on failure, we must delete the newly created file.
            _log.Add(UndoCreateAction(name, stream));

            // Record that, on completion, we need to move the temporary file to the actual file.
            _onComplete.Add(ReplaceAction(name, localPath, taskItem));

            return(XdmWriter.Create(stream, settings));
        }
예제 #3
0
        private void Explain([NotNull] XQuery query)
        {
            Assert.ArgumentNotNull(query, "query");

            Assert.IsNotNull(Plan, "Plan");

            var settings = new XdmWriterSettings
            {
                Indent = true
            };

            var stream = File.OpenWrite(Plan.GetMetadata("FullPath"));

            using (var xdmWriter = XdmWriter.Create(stream, settings))
                query.Explain(xdmWriter);
        }
예제 #4
0
파일: Transform.cs 프로젝트: krwq/XmlPrime
        private void Explain([NotNull] Xslt transform)
        {
            Assert.ArgumentNotNull(transform, "transform");

            Assert.IsNotNull(Plan, "Plan");

            var settings = new XdmWriterSettings
            {
                Indent = true
            };

            var stream = File.OpenWrite(Plan.GetMetadata("FullPath"));

            using (var xdmWriter = XdmWriter.Create(stream, settings))
                transform.Explain(xdmWriter);
        }
예제 #5
0
 public override void Store(XdmWriter writer)
 {
     writer.WriteAttributeInfo(_dm);
     writer.WriteString(_value);
 }
예제 #6
0
 public override void Store(XdmWriter writer)
 {            
 }
예제 #7
0
 public virtual void Store(XdmWriter writer)
 {
 }
예제 #8
0
 public override void Store(XdmWriter writer)
 {
     base.Store(writer);
     writer.WriteString(_text);
 }
예제 #9
0
 public void StoreTextValue(XdmWriter writer)
 {
     writer.WriteString(_value);
 }
예제 #10
0
 public override void Store(XdmWriter writer)
 {
     base.Store(writer);
     XdmNamespace ns = _ns;
     while (ns != null)
     {
         writer.WriteBoolean(true);
         ns.Store(writer);
         ns = ns._next;
     }
     writer.WriteBoolean(false);
     XdmAttribute attr = _attributes;
     while (attr != null)
     {
         writer.WriteBoolean(true);
         attr.Store(writer);
         attr = attr._next;
     }
     writer.WriteBoolean(false);
 }
예제 #11
0
 public override void Store(XdmWriter writer)
 {
     base.Store(writer);
     writer.WriteString(_name);
     writer.WriteString(_value);
 }