Extraction de chaines avec StringTokenizer
Bonjour,
Je cherche a extraire les données entre balises du fichier texte suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| POST /receiver HTTP/1.1\r\n
User-Agent: PhoneTag\r\n
Host: https://api.example.com/collect_transcriptions\r\n
Accept: */*\r\n
Content-Length: 1207\r\n number given here as example
Content-Type: application/xml\r\n
<?xml version = "1.0" encoding = "ISO-8859-1"?>
<treatment_results>
<sp_api_name>PhoneTag</sp_api_name>
<account_did>9384602893</account_did>
<service_type>s2t</service_type>
<request_ref>
<reference_id>4b1e6c33bb0022761c0a4af0</reference_id>
<context_return_data>local context data;1243;e6c34bb0</context_return_data>
</request_ref>b
<receipt>
<receipt_date_time>2011-04-15T13:12:51.23Z</receipt_date_time>
</receipt>
<result>
<treatment_end_date_time>2011-04-15T13:13:06.12Z</treatment_end_date_time>
<treatment_result>transcribed</treatment_result>
<treatment_confidence_rate>0954</treatment_confidence_rate>
</result>
<treated_data>
<media_content_type>text/plain</media_content_type>
<media_content_parameters>charset=gsm-03.38-7</media_content_parameters>
<media_file_data>Bonjour tout le monde mon nom est Jean et je suis né jour a midi.</media_file_data>
</treated_data>
<source_descriptors>
<presumed_language>fr_FR</presumed_language>
</source_descriptors>
</treatment_results> |
Étant donné que l ' entête provient d ' un message soap , je ne peux pas utiliser jdom car le format xml du fichier est non reconnu...
Je dois donc faire ceci a la main , et j ' ai pensé utiliser la classe StringTokenizer , mais j ' ai un peu de mal a l ' utiliser pour récupérer les chaines entre les balises xml.
Mon code est le suivant:
Code:
1 2 3 4 5 6 7 8 9 10
| StringTokenizer st = new StringTokenizer(chaine,"");// chaine contient mon fichier
System.out.println("tokens count: " + st.countTokens());
while (st.hasMoreElements()) {
String token = st.nextElement().toString();
//System.out.println("token = " + token);
String chaine=token.substring(token.indexOf("<sp_api_name>"),token.indexOf("</sp_api_name>"));
System.out.println(chaine);
// ceci fonctionne partiellement car j 'ai toujours la balise ouvrante.
} |
Merci de votre aide