使用C#读取XML并动态执行函数(Reading XML and executing functions dynamically using C#)

编程入门 行业动态 更新时间:2024-10-22 08:30:51
使用C#读取XML并动态执行函数(Reading XML and executing functions dynamically using C#)

我有一个xml如下:

<?xml version="1.0" encoding="ISO-8859-1"?> <TestCase Name="1.7 Bus01"> <Action Word="Login" Text="Login" TestCaseId="MPD_QS_06"> <Parameter Name="userName" Value="user1"/> <Parameter Name="userPwd" Value="user1"/> <Parameter Name="Tenant" Value="tnt1"/> <Parameter Name="expectedResult" Value="Login success"/> </Action> <Action Word="AddOrganisation" Text="AddOrganisation"> <Parameter Name="name" Value="MAHNEWX"/> <Parameter Name="senderId" Value=""/> <Parameter Name="address" Value="77 Westferry Circus"/> <Parameter Name="postCode" Value="E77 4 HB"/> <Parameter Name="city" Value="London"/> <Parameter Name="country" Value="United Kingdom"/> <Parameter Name="state" Value=""/> <Parameter Name="email" Value=""/> <Parameter Name="telCountryCode" Value=""/> <Parameter Name="telNumber" Value=""/> <Parameter Name="telExtension" Value=""/> <Parameter Name="faxCountryCode" Value=""/> <Parameter Name="faxNumber" Value=""/> <Parameter Name="faxExtension" Value=""/> <Parameter Name="roleList" Value="MAH"/> <Parameter Name="expectedResult" Value="Organisation is added"/> </Action> <Action Word="NewValidationRegistration" Text="NewValidationRegistration"> <Parameter Name="registrationname" Value="FusionUnion"/> <Parameter Name="AS2Identifier" Value="MPTVC"/> <Parameter Name="expectedResult" Value="Registration is validated"/> </Action> <Action Word="NewSubmissionRegistration" Text="NewSubmissionRegistration"> <Parameter Name="registrationname" Value="FusionUnion"/> <Parameter Name="AS2Identifier" Value="MPTVC"/> <Parameter Name="expectedResult" Value="Registration is submitted"/> </Action> <Action Word="Logout" Text="Logout"> <Parameter Name="expectedResult" Value="Logout success"/> </Action> </TestCase>

对于每个Action Word,我有一个方法。 如何读取此xml并使用参数动态执行方法。 参数名称是我的方法中的实际变量。 每次参数的数量都不同。 确切地说,我想读取xml并获取动作词列表,然后使用值执行它们。 感谢您的帮助。

-Sasi

I have a xml as below:

<?xml version="1.0" encoding="ISO-8859-1"?> <TestCase Name="1.7 Bus01"> <Action Word="Login" Text="Login" TestCaseId="MPD_QS_06"> <Parameter Name="userName" Value="user1"/> <Parameter Name="userPwd" Value="user1"/> <Parameter Name="Tenant" Value="tnt1"/> <Parameter Name="expectedResult" Value="Login success"/> </Action> <Action Word="AddOrganisation" Text="AddOrganisation"> <Parameter Name="name" Value="MAHNEWX"/> <Parameter Name="senderId" Value=""/> <Parameter Name="address" Value="77 Westferry Circus"/> <Parameter Name="postCode" Value="E77 4 HB"/> <Parameter Name="city" Value="London"/> <Parameter Name="country" Value="United Kingdom"/> <Parameter Name="state" Value=""/> <Parameter Name="email" Value=""/> <Parameter Name="telCountryCode" Value=""/> <Parameter Name="telNumber" Value=""/> <Parameter Name="telExtension" Value=""/> <Parameter Name="faxCountryCode" Value=""/> <Parameter Name="faxNumber" Value=""/> <Parameter Name="faxExtension" Value=""/> <Parameter Name="roleList" Value="MAH"/> <Parameter Name="expectedResult" Value="Organisation is added"/> </Action> <Action Word="NewValidationRegistration" Text="NewValidationRegistration"> <Parameter Name="registrationname" Value="FusionUnion"/> <Parameter Name="AS2Identifier" Value="MPTVC"/> <Parameter Name="expectedResult" Value="Registration is validated"/> </Action> <Action Word="NewSubmissionRegistration" Text="NewSubmissionRegistration"> <Parameter Name="registrationname" Value="FusionUnion"/> <Parameter Name="AS2Identifier" Value="MPTVC"/> <Parameter Name="expectedResult" Value="Registration is submitted"/> </Action> <Action Word="Logout" Text="Logout"> <Parameter Name="expectedResult" Value="Logout success"/> </Action> </TestCase>

For each Action Word I have a method. How can I read this xml and execute the methods dynamically with parameters. The Parameter Name s are actual variables in my methods. The number of parameters differs each time. Precisely, I want to read the xml and get the list of action words and then execute them using the values. Thanks for ur help in advance.

-Sasi

最满意答案

object obj = this; //your object containing methods XDocument xDoc = XDocument.Parse(xml); Type type = obj.GetType(); foreach (var action in xDoc.Descendants("Action")) { MethodInfo mi = type.GetMethod(action.Attribute("Word").Value); var dict = action.Descendants().ToDictionary( d=>d.Attribute("Name").Value, d=>d.Attribute("Value").Value); object[] parameters = mi.GetParameters() .Select(p => Convert.ChangeType(dict[p.Name],p.ParameterType)) .ToArray(); var expectedResult = mi.Invoke(obj, parameters); Debug.Assert(expectedResult.Equals(dict["expectedResult"])); } object obj = this; //your object containing methods XDocument xDoc = XDocument.Parse(xml); Type type = obj.GetType(); foreach (var action in xDoc.Descendants("Action")) { MethodInfo mi = type.GetMethod(action.Attribute("Word").Value); var dict = action.Descendants().ToDictionary( d=>d.Attribute("Name").Value, d=>d.Attribute("Value").Value); object[] parameters = mi.GetParameters() .Select(p => Convert.ChangeType(dict[p.Name],p.ParameterType)) .ToArray(); var expectedResult = mi.Invoke(obj, parameters); Debug.Assert(expectedResult.Equals(dict["expectedResult"])); }

更多推荐

Name,<Parameter,Value,xml,电脑培训,计算机培训,IT培训"/> <meta name="

本文发布于:2023-08-05 03:32:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1428586.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   动态   XML   Reading   dynamically

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!