2011-06-21 1 views
0

J'ai un fichier XML J'utilise TouchXML pour l'analyser. Fondamentalement, une recherche ressemble à ceci:Aide à la requête TouchXML XPath

    <Lookup> 
        <LookupID>201150103538705</LookupID> 
        <LookupName /> 
        <LookupType>Category</LookupType> 
        <VendorID>10</VendorID> 
        </Lookup> 

Quand je fais cela, elle renvoie tout Lookup dans le document:

NSArray *lookups = [[xmlDoc rootElement] nodesForXPath:@"//TestA:Lookup" 
            namespaceMappings:mappings 
               error:nil]; 

Ce que je veux faire est d'obtenir toutes les recherches whos LookupType est égale à la composition (chaîne de comparaison). Voilà donc ce que je l'ai essayé est ce et il retourne null:

NSArray *lookups = [[xmlDoc rootElement] nodesForXPath:@"//TestA:Lookup[LookupType=\"Composition\"]" 
            namespaceMappings:mappings 
               error:nil]; 

Merci

Répondre

0

Le XPath //TestA:Lookup[TestA:LookupType='Composition'] faire ce que vous voulez? Si l'élément parent est dans un espace de noms, alors son enfant aussi, donc je pense que vous avez besoin d'un préfixe sur les deux éléments de votre chemin.

+0

Hey ça a marché! Merci. Une dernière question: si je veux obtenir LookupName plutôt que Lookup, comment le ferais-je? Actuellement, j'ai essayé ceci mais cela ne fonctionne pas: @ "// TestA: Recherche [TestA: LookupType = 'Composition']/LookupName" – sumderungHAY

+0

Bien si les éléments sont dans un espace de noms alors dans votre expression XPath vous devez utiliser un préfixe pour qualifier les noms d'éléments, essayez donc "// TestA: Recherche [TestA: LookupType = 'Composition']/TestA: LookupName'. –