Как преобразовать текстовый файл в xml в xcode

У меня есть большой текстовый файл, который я хочу преобразовать в 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 .. но я получаю сообщение об ошибке, может ли кто-нибудь сказать мне, где я делаю ошибку ??????


person Community    schedule 04.12.2012    source источник
comment
я полагаю... во-первых, вам нужно будет извлечь содержимое текстового файла в NSString   -  person AppleDelegate    schedule 04.12.2012


Ответы (4)


Вы не можете преобразовать файл в xml с помощью XCode, у вас есть два варианта:

Вы можете создать скрипт python или ruby, который анализирует ваш файл и создает файл XML, а затем использует синтаксический анализатор xml,

Или вы можете создать класс, который анализирует ваш обычный файл по нужным вам правилам.

person Antonio MG    schedule 04.12.2012
comment
у меня была та же идея реализовать то, что вы упомянули во втором варианте .... тогда мне нужно прочитать каждую строку и сделать тег xml для тела, родителя, ребенка ... я прав?? - person DD007; 04.12.2012

Я думаю, вы хотите преобразовать .txt в .xml, поэтому для этого я прочитал .txt в nsstring, я вырезал его в NSArray с помощью метода componentSeparatedByString:@"\n" NSString (позаботьтесь о символе \r) и после того, как просто не берите строку, которую вы не хотите, и создайте новую NSString для добавления тега XML в вашу строку, если вы теперь поместите хороший тег или проверьте его с помощью содержимого вашей строки в NSArray для завершения, только что сохраненного в новый файл с расширением .xml.

Если вам нужна помощь в написании кода, как я описал, скажите об этом.

person Illuyankas    schedule 04.12.2012
comment
@ user1770436 спасибо за вашу идею, это потрясающе ... мне это нравится ... если у вас есть пример кода ... мне это нравится :), потому что это уменьшит мою работу .. еще раз спасибо - person DD007; 04.12.2012

В iOS нет возможности конвертировать текст в xml напрямую. Но вы можете сделать это, передав данные вручную.

Для этого вы можете использовать либо libXml framework, либо GDataXml.

Пример кода для создания libXml xml можно найти здесь ссылка и скачайте Chapter 10.zip

Ознакомьтесь с этим руководством для чтения и записи XML. Документы с GDataXML

Также TCMXMLWriter – генератор xml с открытым исходным кодом:

person Midhun MP    schedule 04.12.2012

Я думаю, что такой код работает для вашего примера:

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 в новом файле. Возможно в цикле сделать по номеру, например, если я кратен 3 из 4 и т.д....

person Illuyankas    schedule 04.12.2012
comment
Это не работает, я пытался преобразовать текст в строку в массив и создать тег для определенного символа... но он не преобразуется в формат xml.. - person DD007; 05.12.2012
comment
[xmlFile writeToFile:@/....documents..xml автоматически: ДА, кодировка: NSASCIIStringEncoding error: Null] вау, все работает нормально :) спасибо, приятель - person DD007; 12.12.2012