Je suis resté bloqué en essayant de détecter la paire de noms et la valeur des attributs dans certains xml généraux en utilisant libxml2 pour analyser l'API sur l'application iPhone. Pour mon projet, la vitesse d'analyse est vraiment importante, j'ai donc décidé d'utiliser libxml2 lui-même au lieu d'utiliser NSXMLParser. Maintenant, en référence à XMLPerformance qui est un exemple de SDK iPhone pour le benchmark d'analyse syntaxique entre NSXMLParser et libxml2, j'ai essayé d'obtenir le détail de l'attribut dans un gestionnaire d'analyseur XML comme ci-dessous, mais je ne sais pas exactement comment le détecter. J'ai vu the libxml2 document, mais je ne peux pas. S'il vous plaît aidez-moi si vous êtes grand pirate :)Comment obtenir le nom et la valeur des attributs de xml en utilisant libxml2 sax parser?
Répondre
De la recherche à la documentation liée je pense que quelque chose comme cela pourrait fonctionner:
for (int i=0; i<nb_attributes; i++)
{
// if(*attributes[4] != '\0') // something needed here to null terminate the value
NSString* key = [NSString stringWithCString: attributes[0] encoding: xmlencoding];
NSString* val = [NSString stringWithCString: attributes[3] encoding: xmlencoding];
[attributeDict setValue:val forKey:key];
attributes += 5;
}
Cela suppose qu'il ya toujours 5 pointeurs de chaîne pour chaque attribut. Comme il n'est pas noté autrement, je pense qu'il est sûr de supposer que la chaîne de valeur est terminée à zéro et que le pointeur de fin n'est donné que pour permettre un calcul de longueur facile. Dans le cas où le pointeur de fin ne pointe pas vers un caractère nul, vous devrez interpréter uniquement les caractères des attributs [3] jusqu'aux attributs [4] comme chaîne de valeur (longueur = attributs [4] - attributs [3]). Xmlencoding doit probablement être l'encodage du document/entité xml, sauf que libxml2 effectue déjà une conversion bien que cela semble improbable car il typedefs xmlChar à unsigned char.
Merci, x4u! Enfin, cela fonctionne comme ça. NSString * clé = [NSString stringWithCString: (const char *) attributs [0] codage: NSUTF8StringEncoding]; NSString * val = [[NSString alloc] initWithBytes: attributs (const void *) [3] longueur: (attributs [4] - attributs [3]) codage: NSUTF8StringEncoding]; // il sera nécessaire // [val release]; – tksohishi
- 1. LibXML2 Sax analyse et ampersand
- 2. Demande d'un exemple complet et compilable de sax libxml2
- 3. Parser SAX ne résout pas le nom de fichier
- 4. Parser SAX XML paresseux avec arrêt/reprise
- 5. Comment obtenir des attributs d'un noeud dans libxml2
- 6. VB.NET XML Parser - Trouver des éléments avec des attributs spécifiques et la valeur
- 7. Comment obtenir le nom des attributs de la table?
- 8. Comment valider XML en utilisant SAX?
- 9. comment obtenir la valeur du traitement des attributs par STAX en utilisant le langage java?
- 10. Android SAX parser
- 11. Poco C++ SAX parser: comment obtenir l'élément "inner text"?
- 12. comment obtenir ces éléments XML avec libxml2?
- 13. résultats XML d'analyse syntaxique Doublons utilisant libxml2
- 14. Comment encoder des données arbitraires en XML en utilisant Java 1.4 et SAX?
- 15. Comment obtenir le contenu avec libxml2?
- 16. Comment analyser avec SAX en utilisant Attributs & Valeurs à un chemin d'URL en utilisant iPhone SDK?
- 17. SAX: Comment obtenir le contenu d'un élément
- 18. obtenir des attributs et des valeurs de XML en utilisant C#
- 19. Demander un exemple de code pour analyser XML et obtenir des attributs en utilisant l'API GData
- 20. Comment obtenir une valeur d'attributs lors de l'analyse de xml avec XML :: DOM parser in perl?
- 21. Requête pour obtenir la valeur des attributs en simple db
- 22. Sax Parser Character Array to Integer?
- 23. Obtenir le nom et la valeur de l'étiquette d'entrée
- 24. Perl XML: erreur d'analyse SAX -> Valeur d'attribut non imprimable
- 25. En utilisant SOAP pour générer des attributs XML en PHP
- 26. Conversion des éléments XML aux attributs XML en utilisant XSLT
- 27. obtenir des attributs de nœuds xml spécifiques
- 28. obtenir le nom de l'attribut en plus de la valeur de l'attribut en xml
- 29. Comment obtenir des données pour BeautifulSoup Xml Parser
- 30. Comment renvoyer la valeur des attributs owner et id respectivement à partir d'un ensemble de résultats XML en utilisant PHP?
La capacité doit être définie et non être un pollueur (NSNumber). C'est à dire. [NSMutableDictionary dictionaryWithCapacity: (NSUInteger) nb_attributes]; –