From ae5a8284b6a00d0e221cb2dfe2d5186e3ff38ec9 Mon Sep 17 00:00:00 2001 From: Garritt McCune Date: Tue, 5 Sep 2017 14:27:07 -0500 Subject: [PATCH] Updated the serializer engine to add full end tags to all elements allowing the XML reader object to parse the generated XML more clearly. --- MKVTest/Form1.cs | 16 ++++++------- MKVTest/SerializeMkvInfo.cs | 48 +++++++++++++------------------------ MKVTest/XmlTag.cs | 2 +- 3 files changed, 26 insertions(+), 40 deletions(-) diff --git a/MKVTest/Form1.cs b/MKVTest/Form1.cs index dff8b9f..31ef67f 100644 --- a/MKVTest/Form1.cs +++ b/MKVTest/Form1.cs @@ -280,24 +280,24 @@ namespace MKVTest { var xReader = new XmlTextReader(File.OpenRead("Test.info")); var r = new StringBuilder(); + ClearForm(); + //var readingTrack = false; while (xReader.Read()) { switch (xReader.NodeType) { case XmlNodeType.Element: - r.Append("<" + xReader.Name + ">"); - //listBox1.Items.Add("<" + xReader.Name + ">"); + //if (xReader.Name == "ATrack") + //{ + inputFilesListView.Items.Add(xReader.Name + ": " + xReader.Value); + //} + break; case XmlNodeType.Text: - r.Append(xReader.Value); - //listBox1.Items.Add(xReader.Value); - break; - case XmlNodeType.EndElement: - //listBox1.Items.Add(""); + inputFilesListView.Items.Add(xReader.Value); break; } } - //MessageBox.Show(r.ToString()); } diff --git a/MKVTest/SerializeMkvInfo.cs b/MKVTest/SerializeMkvInfo.cs index 1227258..58c00f8 100644 --- a/MKVTest/SerializeMkvInfo.cs +++ b/MKVTest/SerializeMkvInfo.cs @@ -13,7 +13,6 @@ namespace MKVTest var file = File.ReadAllLines(filePath); if (file.Length == 0) return new List(); var lastDepthLevel = 0; - //var paddingOffSet = GetDepth(file[0]); //var xml = new StringBuilder(); var stack = new Stack(); var xml = new List {""}; @@ -26,17 +25,17 @@ namespace MKVTest for (var i = 0; i < file.Length; i++) { var depth = GetDepth(file[i]); - var tag = CreateTagFromString(file[i]); + var tag = CreateTagFromString(file[i], depth); var padding = new StringBuilder(); - //for (var j = depth - paddingOffSet; j > 0; j--) - //{ - // padding.Append(" "); - //} + for (var j = tag.Depth - 1; j > 0; j--) + { + padding.Append(" "); + } if (i == file.Length - 1) { var t = stack.Pop(); - xml.Insert(xml.Count - 1, padding + "<" + t.Name + " Value=\"" + t.Value + "\" />"); - xml[xml.Count - 1] = padding + "<" + tag.Name + " Value=\"" + tag.Value + "\" />"; + xml.Insert(xml.Count - 1, padding + "<" + t.Name + ">" + t.Value + ""); + xml[xml.Count - 1] = padding + "<" + tag.Name + ">" + tag.Value + ""; //Unwind the stack. xml.AddRange(stack.Select(s => "")); @@ -47,7 +46,7 @@ namespace MKVTest if (stack.Count != 0) { var t = stack.Pop(); - xml[xml.Count - 1] = padding + "<" + t.Name + " Value=\"" + t.Value + "\" />"; + xml[xml.Count - 1] = padding + "<" + t.Name + ">" + t.Value + ""; } } else if (depth < lastDepthLevel) @@ -56,19 +55,20 @@ namespace MKVTest if (stack.Count != 0) { var t = stack.Pop(); - xml[xml.Count - 1] = padding + "<" + t.Name + " Value=\"" + t.Value + "\" />"; + xml[xml.Count - 1] = padding + "<" + t.Name + ">" + t.Value + ""; var diff = lastDepthLevel - depth; var subPadding = new StringBuilder(); for (var j = 0; j < diff; j++) { subPadding.Clear(); - //for (var k = padding.Length - j; k != 0; k--) - //{ - // subPadding.Append(" "); - //} + var subTag = stack.Pop(); + for (var k = subTag.Depth - 1; k != 0; k--) + { + subPadding.Append(" "); + } if (stack.Count != 0) { - xml.Add(subPadding + ""); + xml.Add(subPadding + ""); } else { @@ -85,21 +85,7 @@ namespace MKVTest return xml; } - public List CreateTagListFromFile(string filePath) - { - var file = File.ReadAllLines(filePath); - if (file.Length == 0) return new List(); - var tags = new List(); - foreach (var line in file) - { - var tag = CreateTagFromString(line); - if(tag.Name != string.Empty) tags.Add(tag); - } - - return tags; - } - - private static XmlTag CreateTagFromString(string text, XmlTag parent = null) + private static XmlTag CreateTagFromString(string text, int tagDepth) { var tag = new XmlTag(); var clearingPadding = true; @@ -159,7 +145,7 @@ namespace MKVTest //} tag.Name = FormatTagName(name.ToString()); tag.Value = value.ToString().Trim(); - tag.Parent = parent; + tag.Depth = tagDepth; return tag; } diff --git a/MKVTest/XmlTag.cs b/MKVTest/XmlTag.cs index f23b381..94dce35 100644 --- a/MKVTest/XmlTag.cs +++ b/MKVTest/XmlTag.cs @@ -10,6 +10,6 @@ namespace MKVTest { public string Name; public string Value; - public XmlTag Parent; + public int Depth; } }