ultimo sale proximo precio para nuevo gratis cuando como activar iphone ios xml xml-parsing gdataxml

sale - proximo iphone 2019



¿Cómo puedo analizar este xml usando el analizador GDataXML? (4)

<list> <OrderData HASH="1408108039"></OrderData> <OrderData HASH="208524692"> <id>97</id> <customer> <CustomerData HASH="2128670187"></CustomerData></customer> <billingAddress></billingAddress><deliveryAddress></deliveryAddress> <orderDetail> <list> <OrderDetailData HASH="516790072"></OrderDetailData> <OrderDetailData HASH="11226247"></OrderDetailData> <OrderDetailData HASH="11226247"></OrderDetailData> </list> </orderDetail> <log/> </OrderData> <OrderData HASH="1502226778"></OrderData> </list>

No puedo encontrar una solución para encontrar la cantidad de elementos OrderDetailData ? También leo http://iphonebyradix.blogspot.com/2011/03/using-gdata-to-parse-xml-file.html esta url.

Gracias por adelantado.

Editar:

Estoy explicando mi requerimiento nuevamente. En este xml, habrá múltiples elementos OrderData . Ahora tengo que contar el número de elementos OrderDetailData de un elemento OrderData particular. Supongamos que, según mi xml, el xml analizado actual tiene un elemento OrderData , id nombre y su valor es 97. Ahora, tengo que contar cuántos elementos OrderDetailData están contenidos en el OrderData (which id` es 97).


Si OrderDetailData está presente en el segundo objeto de la matriz todo el tiempo, puede utilizar el siguiente

NSArray* arr = [[XMLelement elementForName:@"list"] elementsForName:@"OrderData"]; NSXMLElement* listElement = [[[arr objectAtIndex:1] elementForName:@"orderDetail"] elementForName:@"list"]; NSArray* orderDetailArray* = [listElement elementsForName:@"OrderDetailData"];

En esto puede obtener los elementos OrderDetailData en la matriz, y puede analizar los datos en bucle. para obtener el uso de valor HASH.

NSString* hash = [[orderDetailArray objectAtIndex:0] stringValueForAttribute:@"HASH"];


Encontré que TouchXML es fácil de analizar y puede acceder directamente a los datos necesarios desde xml

Antes que nada, descargue TouchXML y agregue framework libxml2.dylib a su proyecto. cambie la compilación para "Ruta de búsqueda de encabezado" y agregue "/ usr / include / libxml2". Importe TouchXML.h a su archivo.

//Access document CXMLDocument *parserDoc = [[CXMLDocument alloc] initWithContentsOfURL:url options:0 error:&err]; //Access root element and access children in heirarchy CXMLElement *root = [parserDoc rootElement]; NSArray *places = [[[root children] objectAtIndex:0] children];

Más

//Access node by node NSString *location =[[[[[parserDoc nodesForXPath:@"/xml_api_reply/weather/forecast_information/city" error:nil] objectAtIndex:0] attributeForName:@"data"] stringValue] retain];


Este es el código a continuación, lo he intentado. Obtuve la salida correcta ... echa un vistazo

NSString* xmlString = @"<?xml version=/"1.0/" encoding=/"UTF-8/"?>" "<list>" "<OrderData HASH=/"1408108039/"></OrderData>" "<OrderData HASH=/"208524692/">" "<id>97</id>" "<customer>" "<CustomerData HASH=/"2128670187/"></CustomerData></customer>" "<billingAddress></billingAddress><deliveryAddress></deliveryAddress>" "<orderDetail>" "<list>" "<OrderDetailData HASH=/"516790072/"></OrderDetailData>" "<OrderDetailData HASH=/"11226247/"></OrderDetailData>" "<OrderDetailData HASH=/"11226247/"></OrderDetailData>" "</list>" "</orderDetail>" "<log/></OrderData>" "<OrderData HASH=/"1502226778/"></OrderData>" "</list>"; NSXMLDocument* doc = [[NSXMLDocument alloc] initWithData:[xmlString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil]; NSXMLElement* rootElement = [doc rootElement]; NSArray* arr = [rootElement elementsForName:@"OrderData"]; NSXMLElement* orderDataElement; for (int i = 0; i < [arr count]; i++) { int Id = 0; Id = [[arr objectAtIndex:i] integerValueForNode:@"id"]; if (Id != 0) { orderDataElement = [arr objectAtIndex:i]; break; } } NSArray* orderDetailArray = [[[orderDataElement elementForName:@"orderDetail"] elementForName:@"list"] elementsForName:@"OrderDetailData"]; for (int j = 0; j < [orderDetailArray count]; j++) { NSLog(@"%@", [[orderDetailArray objectAtIndex:j] stringValueForAttribute:@"HASH"]); }


Este es un ejemplo simple de cómo recuperar algunos datos. Este ejemplo es muy simple y no utiliza la expresión XPath. Le sugiero que primero comprenda cómo funciona y luego use la expresión XPath. En mi opinión, no es útil usar la expresión XPath si no puede entender cómo funciona el analizador.

NSString* path = [[NSBundle mainBundle] pathForResource:@"test2" ofType:@"xml"]; NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:path]; NSError *error; GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:&error]; //NSLog(@"%@", doc.rootElement); // print the whole xml NSArray *orderDataArray = [doc.rootElement elementsForName:@"OrderData"]; for (GDataXMLElement *orderDataElement in orderDataArray) { if([orderDataElement childCount] > 0) { NSString *attributeForOrderDataElement = [(GDataXMLElement *) [orderDataElement attributeForName:@"HASH"] stringValue]; NSLog(@"attributeForOrderDataElement has value %@", attributeForOrderDataElement); GDataXMLElement* idElement = (GDataXMLElement*)[[orderDataElement elementsForName:@"id"] objectAtIndex:0]; NSLog(@"id has value %@", idElement.stringValue); GDataXMLElement* orderDetailElement = (GDataXMLElement*)[[orderDataElement elementsForName:@"orderDetail"] objectAtIndex:0]; GDataXMLElement* listElement = (GDataXMLElement*)[[orderDetailElement elementsForName:@"list"] objectAtIndex:0]; NSArray* orderDetailDataArray = [listElement elementsForName:@"OrderDetailData"]; int count = 0; for (GDataXMLElement *orderDetailDataElement in orderDetailDataArray) { NSString *attributeForOrderDetailDataElement = [(GDataXMLElement *) [orderDetailDataElement attributeForName:@"HASH"] stringValue]; NSLog(@"attributeForOrderDetailDataElement has value %@", attributeForOrderDetailDataElement); count++; } NSLog(@"%d", count); } } [doc release]; [xmlData release];

Esta es la consola de salida:

attributeForOrderDataElement has value 208524692 <-- HASH value id has value 97 <-- id value attributeForOrderDetailDataElement has value 516790072 <-- HASH value attributeForOrderDetailDataElement has value 11226247 attributeForOrderDetailDataElement has value 11226247 3 <-- the count

Espero eso ayude.

Editar

test2.xml contiene tu archivo, pero podrías pasarlo como una cadena. También puede pasar parámetros como una cadena como la siguiente:

NSString* xmlString = @"<list>" "<OrderData HASH=/"1408108039/"></OrderData>" "<OrderData HASH=/"208524692/">" "<id>97</id>" "<customer>" "<CustomerData HASH=/"2128670187/"></CustomerData>" "</customer>" "<billingAddress></billingAddress>" "<deliveryAddress></deliveryAddress>" "<orderDetail>" "<list>" "<OrderDetailData HASH=/"516790072/"></OrderDetailData>" "<OrderDetailData HASH=/"11226247/"></OrderDetailData>" "<OrderDetailData HASH=/"11226247/"></OrderDetailData>" "</list>" "</orderDetail>" "<log/>" "</OrderData>" "<OrderData HASH=/"1502226778/"></OrderData>" "</list>"; GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithXMLString:xmlString options:0 error:&error];