0

我有一个大文本文件,我想将其转换为 Xcode。我将主包中的文本文件(拖放)添加到我的项目中。我可以看到文本文件viewDidLoad
但我喜欢将其转换为 XML 文件。例如我的文件看起来像:

  asasasasasas          
  wewewewewewe        
  qwqwqwqwqwqw
xyz_ 22 aaaaaaaaaaa        
fgfgfgfgfgfgfg        
ererererererer

abc_ 12 bbbbbbbbbb       
jkjkjkjkjkjkjk     
lalallalalalal

在上面提到的,我想消除前3行,从xyz_ 22作为(父母)开始,jkjkjkj作为孩子lalalala作为孩子。

我只需要知道如何实现它......我会写代码:)

mycode: - (IBAction)readUsingObjectiveC:(id)pId { NSString * zStr = [NSString stringWithContentsOfFile:@"/Users/dd007/Desktop/abc.txt" encoding:NSASCIIStringEncoding error:NULL]; NSLog(@"readUsingObjectiveC zStr=\n%@",zStr);

// now to extract the data line by line
NSArray * zAryOfLines = [zStr componentsSeparatedByString:@"\n"];
if([zAryOfLines count] == 0) 
{
    NSLog(@"readUsingObjectiveC zAryOfLines count = 0");
    return;
} 
//for (int i=0; i<([zAryOfLines count]-30); ++i)
for ( int i=30; i<zAryOfLines ; i++)  

{
         if([[zAryOfLines objectAtIndex:i] isEqualToString:@"xyz_ "])
         {
             NSLog(@"<msg1>%@<msg1/>\n",[zAryOfLines objectAtIndex:i]);
             NSLog(@"<msg2>%@<msg2/>\n",[zAryOfLines objectAtIndex:i+1]);
             NSLog(@"<msg3>%@<msg3/>\n",[zAryOfLines objectAtIndex:i+2]);
[zArrayOfLines writeToFIle:@"/.....documents/..save.xml" automatically:YES encodingNSASCIIStringEncoding error:NULL];             
         }
     }

我正在转换为 xml 格式,但我喜欢将文件保存为 .xml .. 但我收到错误任何人都可以告诉我我在哪里做错了吗??????

4

4 回答 4

0

我认为您想将 .txt 转换为 .xml,因此为了实现这一点,我将 .txt 读取为 nsstring,我使用 NSString 的 componentsSeparatedByString:@"\n" 方法将其切割成 NSArray(注意 \r 字符)并且在不使用您不想要的线之后创建一个新的 NSString 以将标签 XML 添加到您的行中扩展名为 .xml 的新文件。

如果您需要帮助编写我描述的代码,请说出来。

于 2012-12-04T10:19:53.777 回答
0

您不能使用 XCode 将文件转换为 xml,您有两种选择:

您可以创建解析文件并生成 XML 文件的 python 或 ruby​​ 脚本,然后使用 xml 解析器,

或者你可以创建一个类,用你想要的规则解析你的纯文件。

于 2012-12-04T10:17:05.913 回答
0

在 iOS 中没有直接将文本转换为 xml 的选项。但是您可以通过手动传递数据来做到这一点。

您可以使用任libXml一框架或GDataXml执行此操作。

对于libXmlxml 生成示例代码,请访问此链接并下载 Chapter 10.zip

请查看本教程以使用 GDataXML 读取和写入 XML 文档

TCMXMLWriter也是一个开源xmlgenerator

于 2012-12-04T10:34:41.297 回答
0

我认为这样的代码适用于您的示例:

NSString *contentFile = [[NSString alloc] initWithContentsOfFile:pathFile encoding:NSUTF8StringEncoding error:nil];
NSArray *lineFile = [contentFile componentsSeparatedByString:@"\n"];
NSMutableString *xmlFile = [[NSMutableString alloc] init];
For(int i = 3; i < lineFile.count; i++)//i = 3 for don't take the 3 first line
{
    if ([((NSString *)[lineFile objectAtIndex:i]) rangedOfString:@"test"].location != NSNotFound)
    {
        xmlFile = [NSString stringWithFormat:@"%@<nameTag>%@</nameTag>", xmlFile, (NSString *)[lineFile objectAtIndex:i]];
    }
    else if ...
}

并将他的 nsstring 保存在新文件中。如果 i 是 4 的 3 的倍数等,则可能在循环中按数字生成...

于 2012-12-04T10:47:47.660 回答