Updated the serializer engine to add full end tags to all elements allowing the XML reader object to parse the generated XML more clearly.

This commit is contained in:
2017-09-05 14:27:07 -05:00
parent fcbdbf15a4
commit ae5a8284b6
3 changed files with 26 additions and 40 deletions
+8 -8
View File
@@ -280,24 +280,24 @@ namespace MKVTest
{ {
var xReader = new XmlTextReader(File.OpenRead("Test.info")); var xReader = new XmlTextReader(File.OpenRead("Test.info"));
var r = new StringBuilder(); var r = new StringBuilder();
ClearForm();
//var readingTrack = false;
while (xReader.Read()) while (xReader.Read())
{ {
switch (xReader.NodeType) switch (xReader.NodeType)
{ {
case XmlNodeType.Element: case XmlNodeType.Element:
r.Append("<" + xReader.Name + ">"); //if (xReader.Name == "ATrack")
//listBox1.Items.Add("<" + xReader.Name + ">"); //{
inputFilesListView.Items.Add(xReader.Name + ": " + xReader.Value);
//}
break; break;
case XmlNodeType.Text: case XmlNodeType.Text:
r.Append(xReader.Value); inputFilesListView.Items.Add(xReader.Value);
//listBox1.Items.Add(xReader.Value);
break;
case XmlNodeType.EndElement:
//listBox1.Items.Add("");
break; break;
} }
} }
//MessageBox.Show(r.ToString()); //MessageBox.Show(r.ToString());
} }
+17 -31
View File
@@ -13,7 +13,6 @@ namespace MKVTest
var file = File.ReadAllLines(filePath); var file = File.ReadAllLines(filePath);
if (file.Length == 0) return new List<string>(); if (file.Length == 0) return new List<string>();
var lastDepthLevel = 0; var lastDepthLevel = 0;
//var paddingOffSet = GetDepth(file[0]);
//var xml = new StringBuilder(); //var xml = new StringBuilder();
var stack = new Stack<XmlTag>(); var stack = new Stack<XmlTag>();
var xml = new List<string> {"<File>"}; var xml = new List<string> {"<File>"};
@@ -26,17 +25,17 @@ namespace MKVTest
for (var i = 0; i < file.Length; i++) for (var i = 0; i < file.Length; i++)
{ {
var depth = GetDepth(file[i]); var depth = GetDepth(file[i]);
var tag = CreateTagFromString(file[i]); var tag = CreateTagFromString(file[i], depth);
var padding = new StringBuilder(); var padding = new StringBuilder();
//for (var j = depth - paddingOffSet; j > 0; j--) for (var j = tag.Depth - 1; j > 0; j--)
//{ {
// padding.Append(" "); padding.Append(" ");
//} }
if (i == file.Length - 1) if (i == file.Length - 1)
{ {
var t = stack.Pop(); var t = stack.Pop();
xml.Insert(xml.Count - 1, padding + "<" + t.Name + " Value=\"" + t.Value + "\" />"); xml.Insert(xml.Count - 1, padding + "<" + t.Name + ">" + t.Value + "</" + t.Name + ">");
xml[xml.Count - 1] = padding + "<" + tag.Name + " Value=\"" + tag.Value + "\" />"; xml[xml.Count - 1] = padding + "<" + tag.Name + ">" + tag.Value + "</" + tag.Name + ">";
//Unwind the stack. //Unwind the stack.
xml.AddRange(stack.Select(s => "</" + s.Name + ">")); xml.AddRange(stack.Select(s => "</" + s.Name + ">"));
@@ -47,7 +46,7 @@ namespace MKVTest
if (stack.Count != 0) if (stack.Count != 0)
{ {
var t = stack.Pop(); var t = stack.Pop();
xml[xml.Count - 1] = padding + "<" + t.Name + " Value=\"" + t.Value + "\" />"; xml[xml.Count - 1] = padding + "<" + t.Name + ">" + t.Value + "</" + t.Name + ">";
} }
} }
else if (depth < lastDepthLevel) else if (depth < lastDepthLevel)
@@ -56,19 +55,20 @@ namespace MKVTest
if (stack.Count != 0) if (stack.Count != 0)
{ {
var t = stack.Pop(); var t = stack.Pop();
xml[xml.Count - 1] = padding + "<" + t.Name + " Value=\"" + t.Value + "\" />"; xml[xml.Count - 1] = padding + "<" + t.Name + ">" + t.Value + "</" + t.Name + ">";
var diff = lastDepthLevel - depth; var diff = lastDepthLevel - depth;
var subPadding = new StringBuilder(); var subPadding = new StringBuilder();
for (var j = 0; j < diff; j++) for (var j = 0; j < diff; j++)
{ {
subPadding.Clear(); subPadding.Clear();
//for (var k = padding.Length - j; k != 0; k--) var subTag = stack.Pop();
//{ for (var k = subTag.Depth - 1; k != 0; k--)
// subPadding.Append(" "); {
//} subPadding.Append(" ");
}
if (stack.Count != 0) if (stack.Count != 0)
{ {
xml.Add(subPadding + "</" + stack.Pop().Name + ">"); xml.Add(subPadding + "</" + subTag.Name + ">");
} }
else else
{ {
@@ -85,21 +85,7 @@ namespace MKVTest
return xml; return xml;
} }
public List<XmlTag> CreateTagListFromFile(string filePath) private static XmlTag CreateTagFromString(string text, int tagDepth)
{
var file = File.ReadAllLines(filePath);
if (file.Length == 0) return new List<XmlTag>();
var tags = new List<XmlTag>();
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)
{ {
var tag = new XmlTag(); var tag = new XmlTag();
var clearingPadding = true; var clearingPadding = true;
@@ -159,7 +145,7 @@ namespace MKVTest
//} //}
tag.Name = FormatTagName(name.ToString()); tag.Name = FormatTagName(name.ToString());
tag.Value = value.ToString().Trim(); tag.Value = value.ToString().Trim();
tag.Parent = parent; tag.Depth = tagDepth;
return tag; return tag;
} }
+1 -1
View File
@@ -10,6 +10,6 @@ namespace MKVTest
{ {
public string Name; public string Name;
public string Value; public string Value;
public XmlTag Parent; public int Depth;
} }
} }