我需要使用C#解析自定义文件格式。文件格式是Xcode项目的PBX文件。该格式没有官方文档。但它很直接。这里是一个简单的例子:解析C#中的自定义格式文件#
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
5143B90C1884374800F27FD8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5143B90B1884374800F27FD8 /* Foundation.framework */; };
5143B90E1884374800F27FD8 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5143B90D1884374800F27FD8 /* CoreGraphics.framework */; };
5143B9101884374800F27FD8 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5143B90F1884374800F27FD8 /* UIKit.framework */; };
/* End PBXBuildFile section */
};
rootObject = 5143B9001884374800F27FD8 /* Project object */;
}
在对象部分有一个对象定义的序列:对象唯一id后跟其属性。你可以在这里看到评论。属性值也可以用引号引起来。
PBX文件的完整示例是here。
现在我需要构建该文件的DOM。解决这类任务的最佳方法是什么?
你当然可以做到这一点,与一系列正则表达式的 –
这将是一个很好的开始:http://stackoverflow.com/questions/7557273/tutorial-or-guide-for-scripting-xcode-build-phases 当然,这取决于你的要求。什么是工具将用于?你是否期望格式非常固定(即,你是否总是可以假定'objects = {'这行不会在下一行用'{'写成)?如果它只是一些内部工具,那么你可能会简单地逐行阅读并以一种简单的方式解析(比如'if(line.IndexOf(“objects”)!= -1)...')。 – Luaan
定义最佳。你可以做一个语法并解析它。或者你可以逐行循环并切断字符串,然后测试特定的字符串... –