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:
+8
-8
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
+17
-31
@@ -13,7 +13,6 @@ namespace MKVTest
|
||||
var file = File.ReadAllLines(filePath);
|
||||
if (file.Length == 0) return new List<string>();
|
||||
var lastDepthLevel = 0;
|
||||
//var paddingOffSet = GetDepth(file[0]);
|
||||
//var xml = new StringBuilder();
|
||||
var stack = new Stack<XmlTag>();
|
||||
var xml = new List<string> {"<File>"};
|
||||
@@ -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 + "</" + t.Name + ">");
|
||||
xml[xml.Count - 1] = padding + "<" + tag.Name + ">" + tag.Value + "</" + tag.Name + ">";
|
||||
//Unwind the stack.
|
||||
xml.AddRange(stack.Select(s => "</" + s.Name + ">"));
|
||||
|
||||
@@ -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 + "</" + t.Name + ">";
|
||||
}
|
||||
}
|
||||
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 + "</" + t.Name + ">";
|
||||
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 + "</" + stack.Pop().Name + ">");
|
||||
xml.Add(subPadding + "</" + subTag.Name + ">");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -85,21 +85,7 @@ namespace MKVTest
|
||||
return xml;
|
||||
}
|
||||
|
||||
public List<XmlTag> CreateTagListFromFile(string filePath)
|
||||
{
|
||||
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)
|
||||
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;
|
||||
}
|
||||
|
||||
+1
-1
@@ -10,6 +10,6 @@ namespace MKVTest
|
||||
{
|
||||
public string Name;
|
||||
public string Value;
|
||||
public XmlTag Parent;
|
||||
public int Depth;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user