📄 xmlelementparserbasecollecion.cs
字号:
using System;
using System.Xml;
using System.Reflection;
using System.Diagnostics;
using System.ComponentModel;
using System.Collections;
namespace gowk.GXF
{
internal class XmlElementParserBaseCollecion:ArrayList
{
public XmlElementParserBaseCollecion()
{
}
public new XmlElementParserBase this[int index]
{
get{return (XmlElementParserBase)base[index];}
}
//public override void Sort()
//{
// MethodInvokerComparer mic=new MethodInvokerComparer();
// base.Sort (mic);
//}
public object Parse(XmlNode node,ParserState state)
{
foreach(XmlElementParserBase parser in this)
{
if(parser.CanParse(node,state))
{
/* if(node.Name=="GButton")
{
System.Diagnostics.Trace.WriteLine("+++++++++++++++++++++++++++++++++++++");
}*/
System.Diagnostics.Trace.WriteLine("+++++++++++++++++++++++++++++++++++++");
System.Diagnostics.Trace.WriteLine("parsing:"+node.OuterXml);
System.Diagnostics.Trace.WriteLine("try parser:"+parser.GetType().ToString());
try
{
object ret=parser.Parse(node,state);
if(ret!=null && node.NodeType==XmlNodeType.Element && node.Attributes["id"]!=null)
{
state.MemberInitializer.SetValue(node.Attributes["id"].Value,ret);
}
return ret;
}
catch(System.NotSupportedException nex)
{
System.Diagnostics.Trace.WriteLine("NotSupportedException:"+nex.Message);
System.Diagnostics.Trace.WriteLine("@"+node.OuterXml);
}
catch(System.Exception ex)
{
System.Diagnostics.Trace.WriteLine("+++++++++++++++++++++++++++++++++++++++");
System.Diagnostics.Trace.WriteLine(ex.Message);
System.Diagnostics.Trace.WriteLine(ex.StackTrace);
break;
}
}
}
return null;
}
/* class XmlElementParserBaseComparer:IComparer
{
public XmlElementParserBaseComparer()
{
}
#region IComparer 成员
public int Compare(object x, object y)
{
if((x==null) ||(y==null))throw new Exception();
XmlElementParserBaseComparer a=(XmlElementParserBaseComparer)x;
XmlElementParserBaseComparer b=(XmlElementParserBaseComparer)y;
return a.Prior>=b.Prior?1:0;
}
#endregion
}*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -