使用 XML 编写代码

Code writing using Xml

本文关键字:代码 XML 使用      更新时间:2023-10-16

这似乎是一个奇怪的问题,但请听我说。当我浏览 NeoAxis 引擎的文件时,我发现了一个 xml 文件,该文件似乎是存储在字符串中的代码行。

由于引擎是闭源的,我看不到它是如何工作的,但对于所有有经验的开发人员来说,这怎么可能工作?

如果将 XML 加载到代码中,则字符串将存储为字符串。但是,在 c++ 或 c# 等语言中,有什么方法可以使用字符串作为程序中的语句?

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

如果我能了解一下这是如何完成的,那对很多事情都非常有用

是的,只需将内置的代码编译器与字符串源代码一起使用:

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);

您可以在此处或此处阅读有关它的更多信息。

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

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

如果你真的想知道它是如何在.NET上工作的,那么你可以看看Rick Strahl关于.NET中动态代码执行的优秀教程。 现在有点旧了,但原理仍然适用

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

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