如何将xml(对象)映射到Objective-C中的方法?

我有一个包含结构的xml文件.在这个结构中,我有Actions节点.因此,在Actions节点下,有多个“Action”节点,每个节点都有Value和Name属性.

例如

<?xml version="1.0" encoding="ISO-8859-1"?>

<Testcases SuiteName="CalculatorActions">

    <Testcase id="101" Name="testAddFunction">
        <Setup/>
        <TearDown/>
        <Test>
            <Action Name="Enter first operand" Type="input" Value="5"/>
            <Action Name="Enter second operand" Type="input" Value="3"/>
            <Action Name="Select operator" Type="input" Value="+"/>
            <Action Name="Click Calculator" Type="operation"/>
        </Test>
        <Validations>
            <Action Name="Validate result" Type="output" Value="8"/>
        </Validations>
    </Testcase>

</Testcases>

我想做的是;我想将这些操作映射到我在Objective-C中实现的方法.

比方说我有一个叫做的课; “CalculatorActions”并定义了5个方法.我想将我在xml(文本格式)中的操作映射到我在CalculatorActions中创建的方法.

例如

@interface CalculatorActions : NSObject

// Property
@property (strong,nonatomic) Nsstring* actionScript;

// Actions
- (void)enterFirstOperand:(double)operand;

- (void)enterSecondOperand:(double)operand;

- (void)selectOperator:(Nsstring*)operator;

- (void)clickCalculate;

// Validations

-(void)validateResult:(Nsstring*)exptectedResult;

@end

所以当我读取xml文件时,我想将xml文件中的操作映射到类中的相应方法.

我认为我在寻找的东西是这样的;

@interface CalculatorActions

[Action("addOperand","Enter first operand")]
- (void) addOperand:(double)operand1 ToOther:(double)operand2;

最好的方法是什么?

解决方法

您可以创建NSInvocation实例,设置选择器,参数以及可选地捕获返回值.您可以使用字符串创建所有这些.

例如

SEL mySelector = NSSelectorFromString(@"testAddFunction");
Class MyClass = NSClassFromString(@"CalculatorActions");
Nsstring *myArgument = @"5";

NSInvocation *myInvocation = [NSInvocation invocationWithMethodSignature:[MyClass instanceMethodSignatureForSelector:mySelector]];
[invocation setTarget:myClass];
[invocation setSelector:mySelector];
[invocation setArgument:&myArgument atIndex:2];
[invocation invoke];

注 – setArgument:选择器接受指针地址,参数索引从2开始.

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念