private void WriteAttributes()

in src/StructuredLogger/Serialization/XmlLogWriter.cs [94:181]


        private void WriteAttributes(TreeNode node)
        {
            var folder = node as Folder;
            if (folder != null)
            {
                if (!Serialization.IsValidXmlElementName(folder.Name))
                {
                    SetString(nameof(folder.Name), folder.Name);
                }

                if (folder.IsLowRelevance)
                {
                    SetString(nameof(folder.IsLowRelevance), "true");
                }

                return;
            }

            var namedNode = node as NamedNode;
            if (namedNode != null)
            {
                SetString(nameof(NamedNode.Name), namedNode.Name?.Replace("\"", ""));
            }

            var textNode = node as TextNode;
            if (textNode != null)
            {
                SetString(nameof(TextNode.Text), textNode.Text);
            }

            if (node is TimedNode timedNode)
            {
                AddStartAndEndTime(timedNode);
                SetString(nameof(TimedNode.NodeId), timedNode.NodeId.ToString());
            }

            var task = node as Task;
            if (task != null)
            {
                SetString(nameof(task.FromAssembly), task.FromAssembly);
                SetString(nameof(task.CommandLineArguments), task.CommandLineArguments);
                SetString(nameof(AttributeNames.File), task.SourceFilePath);

                return;
            }

            var target = node as Target;
            if (target != null)
            {
                SetString(nameof(target.DependsOnTargets), target.DependsOnTargets);
                if (target.IsLowRelevance)
                {
                    SetString(nameof(target.IsLowRelevance), "true");
                }

                SetString(nameof(AttributeNames.File), target.SourceFilePath);

                return;
            }

            var diagnostic = node as AbstractDiagnostic;
            if (diagnostic != null)
            {
                SetString(nameof(diagnostic.Code), diagnostic.Code);
                SetString(nameof(diagnostic.File), diagnostic.File);
                SetString(nameof(diagnostic.LineNumber), diagnostic.LineNumber.ToString());
                SetString(nameof(diagnostic.ColumnNumber), diagnostic.ColumnNumber.ToString());
                SetString(nameof(diagnostic.EndLineNumber), diagnostic.EndLineNumber.ToString());
                SetString(nameof(diagnostic.EndColumnNumber), diagnostic.EndColumnNumber.ToString());
                SetString(nameof(diagnostic.ProjectFile), diagnostic.ProjectFile);
                return;
            }

            var project = node as Project;
            if (project != null)
            {
                SetString(nameof(project.ProjectFile), project.ProjectFile);
                return;
            }

            var build = node as Build;
            if (build != null)
            {
                SetString(nameof(build.Succeeded), build.Succeeded.ToString());
                SetString(nameof(Build.IsAnalyzed), build.IsAnalyzed.ToString());
                return;
            }
        }