使用 XML 编写代码
Code writing using Xml
这似乎是一个奇怪的问题,但请听我说。当我浏览 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 表达式是非常常见的做法。
相关文章:
- 用于C++代码的 API 监视器类型定义 (XML)
- 如何使用所有其他文件信息来编译代码,例如HAAR级联训练的权重的XML文件
- 用于人脸检测的Haar级联xml文件代码解释OpenCV
- 使用代码合成c++更改XML值
- 使用 XML 编写代码
- 为什么使用valgrind时管道会变得混乱的代码 --xml-fd
- 无法对代码合成 XML 类型执行操作
- qt项目代码到xml文件的转换
- 使用puixml在代码块(C++)中打开一个XML文件
- 代码合成XSD解析/数据绑定xml字符串,而不是xml文件
- 我可以得到C/ c++ /Java代码的XML AST而不编译它吗?
- 关于使用C, XML或JavaScript和win32 API编写代码的想法
- 在WinCE环境中生成c# / c++ Xml代码文档
- 可生成xml输出的unix c++代码复杂度分析
- 如何在Visual Studio 2013中快速向c++代码中添加XML注释
- 没有托管代码的xml序列化
- 解析xml文件并动态生成c++代码以构建面板(UI)
- 数据绑定- XML数据绑定和c++代码生成器
- 在c++中动态生成XML代码
- 代码合成似乎没有生成"valid" xml树