public void LoadDefinitionByXml(string xml) { TrIdEngineConfig trIdEngineConf = LoadDefinitionByXml(xml, FileFrontSize); if (trIdEngineConf != null) { Definitions.Add(trIdEngineConf.Definition); FileFrontSize = Math.Max(FileFrontSize, trIdEngineConf.MaxFrontSize); } }
public static TrIdEngineConfig LoadDefinitionByXml(string xml, int maxFrontSize) { TrIdEngineConfig trIdEngineConf = null; if (xml != null) { trIdEngineConf = new TrIdEngineConfig(); FileDefPattern fileDefPat = new FileDefPattern { ExtraInfo = new ExtraInfo() }; XPathDocument xPathDocument = new XPathDocument(new StringReader(xml)); XPathNavigator nav = xPathDocument.CreateNavigator(); fileDefPat.FileExt = nav.SelectSingleNode("//Info/Ext")?.Value; fileDefPat.FileType = nav.SelectSingleNode("//Info/FileType")?.Value; fileDefPat.ExtraInfo.FileType = fileDefPat.FileType; fileDefPat.ExtraInfo.FileExt = fileDefPat.FileExt; fileDefPat.ExtraInfo.AuthorName = nav.SelectSingleNode("//Info/User")?.Value; fileDefPat.ExtraInfo.AuthorEMail = nav.SelectSingleNode("//Info/E-Mail")?.Value; fileDefPat.ExtraInfo.AuthorHome = nav.SelectSingleNode("//Info/Home")?.Value; fileDefPat.ExtraInfo.Remark = nav.SelectSingleNode("//ExtraInfo/Rem")?.Value; fileDefPat.ExtraInfo.RelURL = nav.SelectSingleNode("//ExtraInfo/RefURL")?.Value; fileDefPat.ExtraInfo.FilesScanned = (int)Math.Round(double.Parse(nav.SelectSingleNode("//General/FileNum")?.Value ?? "0")); LoadFrontBlockNode(fileDefPat, nav.Select("//FrontBlock/Pattern")); LoadGlobalStringsNode(fileDefPat, nav.Select("//GlobalStrings/String")); /* * XmlDocument xmlDocument = new XmlDocument(); * xmlDocument.LoadXml(xml); * fileDefPat.FileType = xmlDocument.SelectSingleNode("//Info/FileType")?.InnerText; * XmlNode xmlNode = xmlDocument.SelectSingleNode("//Info/Ext"); * if (xmlNode != null) * { * fileDefPat.FileExt = xmlNode.InnerText; * } * * fileDefPat.ExtraInfo.FileType = fileDefPat.FileType; * fileDefPat.ExtraInfo.FileExt = fileDefPat.FileExt; * * xmlNode = xmlDocument.SelectSingleNode("//Info/User"); * if (xmlNode != null) * { * fileDefPat.ExtraInfo.AuthorName = xmlNode.InnerText; * } * * xmlNode = xmlDocument.SelectSingleNode("//Info/E-Mail"); * if (xmlNode != null) * { * fileDefPat.ExtraInfo.AuthorEMail = xmlNode.InnerText; * } * * xmlNode = xmlDocument.SelectSingleNode("//Info/Home"); * if (xmlNode != null) * { * fileDefPat.ExtraInfo.AuthorHome = xmlNode.InnerText; * } * * xmlNode = xmlDocument.SelectSingleNode("//ExtraInfo/Rem"); * if (xmlNode != null) * { * fileDefPat.ExtraInfo.Remark = xmlNode.InnerText; * } * * xmlNode = xmlDocument.SelectSingleNode("//ExtraInfo/RefURL"); * if (xmlNode != null) * { * fileDefPat.ExtraInfo.RelURL = xmlNode.InnerText; * } * * xmlNode = xmlDocument.SelectSingleNode("//General/FileNum"); * if (xmlNode != null) * { * fileDefPat.ExtraInfo.FilesScanned = (int) Math.Round(double.Parse(xmlNode.InnerText)); * } * * XmlNodeList frontBlockNode = xmlDocument.SelectNodes("//FrontBlock/Pattern"); * if (frontBlockNode != null) * { * LoadFrontBlockNode(fileDefPat, frontBlockNode); * } * * XmlNodeList globalStringsNode = xmlDocument.SelectNodes("//GlobalStrings/String"); * if (globalStringsNode != null) * { * LoadGlobalStringsNode(fileDefPat, globalStringsNode); * } */ trIdEngineConf.MaxFrontSize = Math.Max(maxFrontSize, fileDefPat.FrontBlockSize); trIdEngineConf.Definition = fileDefPat; } return(trIdEngineConf); }