2010-11-19 17 views
1

Je me demandais quel serait le meilleur moyen de récupérer les données suivantes et de les analyser.Saisir des données de fichier XML à partir d'un site Web

Voici un exemple des données que je veux tirer.

<?xml version="1.0" encoding="UTF-8" ?> 
<eveapi version="2"> 
    <currentTime>2010-11-19 19:23:44</currentTime> 
    <result> 
     <rowset name="characters" key="characterID" columns="name,characterID,corporationName,corporationID"> 
      <row name="jennyhills" characterID="90052591" corporationName="Imperial Academy" corporationID="1000166" /> 
     </rowset> 
    </result> 
    <cachedUntil>2010-11-19 20:20:44</cachedUntil> 
</eveapi> 

J'ai vu quelques exemples sur la façon d'analyser les données XML mais elles sont toutes basées sur des déclarations et si c'est beaucoup de codage dur est-il un moyen plus générique de le faire?

+0

http://thedailywtf.com/Articles/Soft_Coding.aspx – dsolimano

Répondre

0

L '"analyse", prenant le terme littéralement, est facile. L'analyse est le processus consistant à prendre une chaîne de texte (dans votre cas, à partir d'une réponse http) et à la transformer en une structure de données telle qu'un arbre de document XML. Ce processus est géré pour vous par un analyseur XML et vous n'avez généralement pas besoin de vous en préoccuper.

La partie à laquelle vous faites face est de savoir comment interroger des données à partir du document XML analysé, n'est-ce pas? La façon la plus simple de dépendre grandement de ce que vous devez faire avec les données. Mais XPath est un bon moyen de sélectionner des données sans beaucoup d'instructions verbeuses if et d'appels de fonction get-child. Voir aussi this question on using XPath in Android.

1

Les parseurs sont codés en dur, c'est ainsi qu'ils fonctionnent. Vous pouvez seulement vérifier si une certaine étiquette correspond à un certain modèle, puis décider quoi faire. Surtout pour les documents simples comme le vôtre, cela ne pose absolument aucun problème.

Si vous avez plus d'un type de document à analyser, nous vous recommandons de lire ceci SO answer.