使用Xml编写代码

时间:2012-07-02 21:17:01

标签: c# c++ xml

这似乎是一个奇怪的问题但听我说。当我发现一个xml文件看起来像是存储在字符串中的代码行时,我正在查看NeoAxis引擎的文件。

由于发动机处于关闭状态,我无法看到它是如何工作的,但对于所有经验丰富的开发人员来说,这怎么可能有效呢?

如果XML已加载到代码中,则字符串将存储为字符串。但有没有办法,用c ++或c#等语言在程序中使用字符串作为语句?

我不知道我是否允许向您展示此XML文件,但这些语句的前缀是字母和冒号。像这样:"M:Class.DoSomething();".

如果我能够了解这是如何完成的,那么对于很多事情来说非常有用

4 个答案:

答案 0 :(得分:2)

是的,只需使用内置的Code Compiler和您的String源代码:

CSharpCodeProvider codeProvider = new CSharpCodeProvider();
ICodeCompiler icc = codeProvider.CreateCompiler();

System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = true;
parameters.OutputAssembly = Output;
CompilerResults results = icc.CompileAssemblyFromSource(parameters,SourceString);

您可以详细了解herehere

答案 1 :(得分:0)

M:Class.DoSomething()语法看起来很像它可能来自编译器生成的XML文档文件。

参见例如http://msdn.microsoft.com/en-us/library/aa288481(v=VS.71).aspx

答案 2 :(得分:0)

如果您真的想知道这对.NET有何用处,那么您可以查看Rick Strahl关于Dynamic Code Execution in .NET的优秀教程。它现在有点旧了,但原则仍然适用

答案 3 :(得分:0)

XML可用于存储任何内容,包括程序文本的片段。 XML的使用者可以通过多种方式使用这些片段。它可能能够以解释方式执行它们,或者它可能只是使用它们来构造一个完整的程序,然后以通常的方式编译和执行。

您发布的代码片段中的分号表示它可能不是XPath,但除此之外它可能是。将XPath表达式存储在XML文档中是非常常见的做法。