我正在尝试在 IOS 中解析此 XML 代码:
<?xml version="1.0" encoding="ISO-8859-1"?>
<ofertas>
<oferta>
<id>138</id>
<connector/>
<codigo>PARMAD</codigo>
<titulo><![CDATA[Madrid, BordÈus e Paris]]></titulo>
<descricao><![CDATA[ 7 dias c/ Pequeno AlmoÁo - Apenas Circuito Terrestre - Alojamento e Pequeno-AlmoÁo ; 7 dias c/ Pequeno AlmoÁo - SaÌda com voo de Lisboa - Alojamento e Pequeno-AlmoÁo ; 7 dias c/ Pequeno AlmoÁo - SaÌda com voo do Porto - Alojamento e Pequeno-AlmoÁo ; 7 dias c/ Pequeno AlmoÁo - SaÌda com voo de Faro - Alojamento e Pequeno-AlmoÁo]]></descricao>
<datas><![CDATA[Consultar programa]]></datas>
<data1>2012-07-31</data1>
<data2>2013-03-23</data2>
<categoria>Europa</categoria>
<subcategoria>Circuitos Europa</subcategoria>
<zona>Turistica</zona>
<tipo>Circuitos Europa</tipo>
<valor>575</valor>
<dias>6</dias>
<imagem>http://www.optitravel.net/optitravel/www/media/custom/cli_202/media/PKT_138_1343738358.jpg</imagem>
<link/>
</oferta>
<oferta>
<id>140</id>
<connector/>
<codigo>PARPRG</codigo>
<titulo><![CDATA[Paris, Frankfurt e Praga]]></titulo>
<descricao><![CDATA[ 7 dias c/ Pequeno AlmoÁo - Apenas Circuito Terrestre - Alojamento e Pequeno-AlmoÁo ; 7 dias c/ Pequeno AlmoÁo - SaÌda com voo de Lisboa - Alojamento e Pequeno-AlmoÁo ; 7 dias c/ Pequeno AlmoÁo - SaÌda com voo do Porto - Alojamento e Pequeno-AlmoÁo ; 7 dias c/ Pequeno AlmoÁo - SaÌda com voo de Faro - Alojamento e Pequeno-AlmoÁo]]></descricao>
<datas><![CDATA[01/Nov, 08/Nov, 15/Nov, 29/Nov, 13/Dez, 27/Dez, 10/Jan/2013, 24/Jan/2013, 07/Fev/2013, 21/Fev/2013, 07/Mar/2013, 21/Mar/2013]]></datas>
<data1>2012-08-01</data1>
<data2>2013-03-21</data2>
我不知道这是否是解析大文件的最佳选择,但我正在使用SMXMLDocument
它来解析这个特定的 XML。我遇到的问题是我无法解码这个 XML。这是我正在使用的 XML 解析器的作者给出的代码示例:
//REPLACED WITH MY XML DOC
NSString *sampleXML = [[NSBundle mainBundle] pathForResource:@"global" ofType:@"xml"];
NSData *data = [NSData dataWithContentsOfFile:sampleXML];
// create a new SMXMLDocument with the contents of sample.xml
NSError *error;
SMXMLDocument *document = [SMXMLDocument documentWithData:data error:&error];
// check for errors
if (error) {
NSLog(@"Error while parsing the document: %@", error);
return;
}
// demonstrate -description of document/element classes
NSLog(@"Document:\n %@", document);
// Pull out the <books> node
SMXMLElement *books = [document.root childNamed:@"????"];
// Look through <books> children of type <book>
for (SMXMLElement *book in [books childrenNamed:@"????"]) {
// demonstrate common cases of extracting XML data
NSString *isbn = [book attributeNamed:@"id"]; // XML attribute
NSString *title = [book valueWithPath:@"titulo"]; // child node value
// show off some KVC magic
NSArray *authors = [[book childNamed:@"authors"].children valueForKey:@"value"];
NSLog(@"Found a book!\n ISBN: %@ \n Title: %@ \n Price: %f \n", isbn, title, price);
}
如果有更好的 XML 解析器来解析这个文档,请告知。