private List <AnalyzeXML> analyzeSub(string txt) { List <AnalyzeXML> aaa = new List <AnalyzeXML>(); int a1 = txt.LastIndexOf("&>"); int a2 = txt.LastIndexOf(">"); int b1 = txt.IndexOf("&<"); int b2 = txt.IndexOf("<"); if (a2 != -1 && b2 != -1) { if (a2 > a1) { if ((b1 != -1 && b2 < b1) || b1 == -1) { AnalyzeXML a = new AnalyzeXML(txt, 0); if (a.error != null) { error = a.error; return(aaa); } else { aaa.Add(a); } string keyEnd = "</" + a.key; int end = txt.Length; int start = txt.IndexOf(keyEnd) + keyEnd.Length; while (start < end) { if (txt[start++] == '>') { break; } } if (start < end) { string txt2 = txt.Substring(start, end - start); List <AnalyzeXML> aaa2 = analyzeSub(txt2); foreach (AnalyzeXML A in aaa2) { aaa.Add(A); if (A.error != null) { error = A.error; } } } } } } return(aaa); }
public static void test() { AnalyzeXML xml_base = new AnalyzeXML(File.ReadAllText("base.txt", Encoding.Default)); AnalyzeXML xml_yin = new AnalyzeXML(File.ReadAllText("yin.txt", Encoding.Default)); AnalyzeXML xml_yangw = new AnalyzeXML(File.ReadAllText("yangw.txt", Encoding.Default)); AnalyzeXML xml_yangy = new AnalyzeXML(File.ReadAllText("yangy.txt", Encoding.Default)); string txt2 = File.ReadAllText("测试数据3.txt", Encoding.Default); AnalyzeXML xml2 = new AnalyzeXML(txt2); if (xml2.error != null) { Console.WriteLine(xml2.error); } else { Console.WriteLine(xml2["NewDataSet"][0]["Table"][0]["PatientID"][0].ToString()); } }