Extraire la valeur d'un attribut d'un document XML en java

nacef007 Messages postés 28 Date d'inscription samedi 10 mars 2012 Statut Membre Dernière intervention 15 décembre 2012 - 15 mars 2012 à 20:07
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 18 mars 2012 à 15:41
Bonsoir à tous

Ceci est un extrait d'un fichier XML.
Je veux faire un programme qui extrait le continue de la balise dans un document texte.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang= "ar" dir="rtl" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>أبوجا - ويكيبيديا، الموسوعة الحرة</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="generator" content="MediaWiki 1.19wmf1" />
<link rel="canonical" href="/wiki/%D8%A3%D8%A8%D9%88%D8%AC%D8%A7" />
<link rel="alternate" type="application/x-wiki" title="عدل هذه الصفحة" href="/w/index.php?title=%D8%A3%D8%A8%D9%88%D8%AC%D8%A7&action=edit" />
<link rel="edit" title="عدل هذه الصفحة" href="/w/index.php?title=%D8%A3%D8%A8%D9%88%D8%AC%D8%A7&action=edit" />
<link rel="apple-touch-icon" href="//ar.wikipedia.org/apple-touch-icon.png" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="ويكيبيديا (ar)" />
<link rel="EditURI" type="application/rsd+xml" href="//ar.wikipedia.org/w/api.php?action=rsd" />
<link rel="copyright" href="//creativecommons.org/licenses/by-sa/3.0/" />
<link rel="alternate" type="application/atom+xml" title="ويكيبيديا تلقيم أتوم" href="/w/index.php?title=%D8%AE%D8%A7%D8%B5:%D8%A3%D8%AD%D8%AF%D8%AB_%D8%A7%D9%84%D8%AA%D8%BA%D9%8A%D9%8A%D8%B1%D8%A7%D8%AA&feed=atom" />
<link rel="stylesheet" href="//bits.wikimedia.org/ar.wikipedia.org/load.php?debug=false&lang=ar&modules=ext.flaggedRevs.basic%7Cext.wikihiero%7Cmediawiki.legacy.commonPrint%2Cshared%7Cskins.vector&only=styles&skin=vector&*" type="text/css" media="all" />
<meta name="ResourceLoaderDynamicStyles" content="" />
<link rel="stylesheet" href="//bits.wikimedia.org/ar.wikipedia.org/load.php?debug=false&lang=ar&modules=site&only=styles&skin=vector&*" type="text/css" media="all" />
<style type="text/css" media="all">a:lang(ar),a:lang(ckb),a:lang(fa),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}a.new,#quickbar a.new{color:#ba0000}

/* cache key: arwiki:resourceloader:filter:minify-css:7:c88e2bcd56513749bec09a7e29cb3ffa */</style>

<script src="//bits.wikimedia.org/ar.wikipedia.org/load.php?debug=false&lang=ar&modules=startup&only=scripts&skin=vector&*" type="text/javascript"></script>
<script type="text/javascript">if(window.mw){
mw.config.set({"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"أبوجا","wgTitle":"أبوجا","wgCurRevisionId":8095884,"wgArticleId":45581,"wgIsArticle":true,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["بذرة جغرافيا نيجيريا","نيجيريا","عواصم أفريقيا","أعضاء منظمة العواصم والمدن الإسلامية"],"wgBreakFrames":false,"wgPageContentLanguage":"ar","wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["0 1 2 3 4 5 6 7 8 9 . ,","٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩ ٫ ٬"],"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgSearchNamespaces":[0],"wgRedirectedFrom":"ابوجا","wgVectorEnabledModules":{"collapsiblenav":true,"collapsibletabs":true,"editwarning":true,"expandablesearch":false,"footercleanup":false,"sectioneditlinks":false,"simplesearch":true,"experiments":true},"wgWikiEditorEnabledModules":{"toolbar":true,"dialogs":true,"hidesig":true,"templateEditor":false,"templates":false,"preview":false,"previewDialog":false,"publish":false,"toc":false},"wikilove-recipient":"","wikilove-edittoken":"+\","wikilove-anon":0,"wgFlaggedRevsParams":{"tags":{"accuracy":{"levels":2,"quality":2,"pristine":4}}},"wgStableRevisionId":8095884,"wgCategoryTreePageCategoryOptions":"{"mode":0,"hideprefix":20,"showcount":true,"namespaces":false}","Geo":{"city":"","country":""},"wgNoticeProject":"wikipedia"});
}</script><script type="text/javascript">if(window.mw){
mw.loader.implement("user.options",function($){mw.user.options.set({"ccmeonemails":0,"cols":80,"date":"default","diffonly":0,"disablemail":0,"disablesuggest":0,"editfont":"default","editondblclick":0,"editsection":1,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":0,"extendwatchlist":0,"externaldiff":0,"externaleditor":0,"fancysig":0,"forceeditsummary":0,"gender":"unknown","hideminor":0,"hidepatrolled":0,"highlightbroken":1,"imagesize":2,"justify":0,"math":0,"minordefault":0,"newpageshidepatrolled":0,"nocache":0,"noconvertlink":0,"norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"quickbar":5,"rcdays":7,"rclimit":50,"rememberpassword":0,"rows":25,"searchlimit":20,"showhiddencats":false,"showjumplinks":1,"shownumberswatching":1,"showtoc":1,"showtoolbar":1,"skin":"vector","stubthreshold":0,"thumbsize":4,"underline":2,"uselivepreview":0,"usenewrc":0,"watchcreations":1,"watchdefault":0,
"watchdeletion":0,"watchlistdays":3,"watchlisthideanons":0,"watchlisthidebots":0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"wllimit":250,"flaggedrevssimpleui":1,"flaggedrevsstable":0,"flaggedrevseditdiffs":true,"flaggedrevsviewdiffs":false,"vector-simplesearch":1,"useeditwarning":1,"vector-collapsiblenav":1,"usebetatoolbar":1,"usebetatoolbar-cgd":1,"wikilove-enabled":1,"variant":"ar","language":"ar","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false,"searchNs100":false,"searchNs101":false,"searchNs104":false,"searchNs105":false,"gadget-AdvancedSiteNotices":1});;},{},{});mw.loader.implement("user.tokens",function($){mw.user.tokens.set({"editToken":"+\","watchToken":false});;},{},{});

/* cache key: arwiki:resourceloader:filter:minify-js:7:ed186af476a1959b0b5119b40433be31 */
}</script>
<script type="text/javascript">if(window.mw){
mw.loader.load(["mediawiki.page.startup","mediawiki.legacy.wikibits","mediawiki.legacy.ajax"]);
}</script>
<!--[if lt IE 7]><style type="text/css">body{behavior:url("/w/skins-1.19/vector/csshover.min.htc")}</style><![endif]--></head>





<!-- content -->


ابوجا)



<!-- /subtitle -->
<!-- jumpto -->


اذهب إلى: تصفح,
البحث


<!-- /jumpto -->
<!-- bodycontent -->



/w/index.php?title=%D9%85%D9%84%D9%81:Locator_Map_Abuja-Nigeria.png&filetimestamp=20050821162506



/w/index.php?title=%D9%85%D9%84%D9%81:Locator_Map_Abuja-Nigeria.png&filetimestamp=20050821162506

موقع مدينة أبوجا








=%D9%85%D9%84%D9%81:Abuja.jpg&filetimestamp= 20061005164959



/w/index.php?title=%D9%85%D9%84%D9%81:Abuja.jpg&filetimestamp=20061005164959

منظر عام للعاصمة





أبوجا هي عاصمة فيدرالية نيجيريا. تقع في الوسط مما يُعرف بمنطقة العاصمة الإتحادية. وتُعد أبوجا من المدن المخطط لها بمعنى أنه تم تخطيطها لتكون عاصمة البلاد وهي من المدن الحديثة نسبياً حيث بدأ انشائها في الثمانينيات وأصبحت عاصمة نيجيريا الرسمية في 12 ديسمبر 1991 بدلا من العاصمة القديمة لاجوس، ويُقدر عدد سكانها بحوالى 405,000 نسمة(طبقاً لإحصائيات 2005). من المعالم الجغرافية التي تُعرف بها المدينة صخرة آسو(Aso Rock) وهي عبارة عن صخرة ضخمة ارتفاعها 400 متر ناتجة عن التآكل بواسطة المياه ويمتد جنوباً منها جزء كبير من المدينة حيث يوجد المجمع الرئاسي, المجلس الوطني والمحكمة العليا. معظم المدينة لم يتم بنائها كما هو مُخطط بعد والعديد من المبانى لم تكتمل حتى الآن.


محتويات

<li class="toclevel-1 tocsection-1">عدل] التاريخ

نتيجة للاختلافات العرقية والدينية بنيجيريا فقد تم وضع خطط منذ استقلالها لتكون لديها عاصمة في منطقة تعتبر محايدة لكل الأطراف وأخير تم اختيار موقع العاصمة في بداية السبعينيات بمركز البلاد بما له من دلالة على وحدة وحيادية الأمة.و كان الانفجار السكانى بلاجوس سبب آخر لبناء أبوجا حيث أصبحت المدينة مزدحمة يالسكان وأوضاعها سيئة. كان قد تقرر أن يبدأالعمل في البناء في أواخر السبعينيات لكن نتيجة للإضطرابات السياسية والاقتصادية لم تكتمل المراحل الأولى من المدينة حتى نهاية الثمانينيات. قامت معظم الدول بنقل سفاراتها إلى أبوجا مع الاحتفاظ بمقارهم السابقة كقنصليات في العاصمة الاقتصادية لاجوس


[عدل] تقسيم المدينة

[عدل] المقاطعات

المدينة مُقسمة إلى خمس مقاطعات كالتالى:


مقاطعة أسوكورو(Asokoro)


مقاطعة مايتاما(Maitama)


مقاطعة ووسي(Wuse)


مقاطعة جاركي(Garki)


المقاطعة المركزية


[=%D8%A3%D8%A8%D9%88%D8%AC%D8%A7&action=edit&section=4 عدل] الضواحى

كاروو (Karu)


غواغوالدا(Gwagwalada)


كوبوا(Kubwa)


جوكويي(Jukwoyi)




[عدل] المتنزهات والأماكن المفتوحة

تُعد أبوجا موطن للعديد من المتنزهات والحدائق العامة والمساحات الخضراء ومن أكبر المتنزهات هناك منتزه الألفية (Millennium Park) الذي قام بتصميمه المهندس المعمارى مانفريدي نيكوليتي وتم افتتاحه رسمياً يوم الخميس 4 نوفمبر بحضور الملكة إليزابيث الثانية


[عدل] المناخ والطقس

تتعرض منطقة العاصمة الإتحادية سنوياً لموسم أمطار حار رطب وموسم جاف


[عدل] النباتات

[عدل] المواصلات

يعد مطار أبوجا الدولي هو المطار الوحيد بالمدينة ويتم حالياً تحديثه ليكون جاهز لإستضافة حدث مهم هو دورة ألعاب الكومنولث وتملك أبوجا أيضاً سيارات أجرة غير ملوثة للبيئة كما يوجد بها نظام كفء للنقل الجماعي للركاب؟






J'ai fait ce programme mais malheureusement ça ne marche pas malgré que l'idée est correct.

import java.io.File;
import java.util.List;
import java.io.*;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;

public class Filtrage {
private File xml;
private Element racine;
private Document document;
public int a=0;


@SuppressWarnings("unchecked")
public Filtrage(File xml) {
this.xml = xml;


parse();


//for(Element e : (List<Element>)racine.getChildren("word")){//, Namespace.getNamespace("http://www.owl-ontologies.com/Ontology1265893389.owl#"))){
//for(Element e1 : (List<Element>)e.getChildren("wordid")){//, Namespace.getNamespace("http://www.owl-ontologies.com/Ontology1265893389.owl#"))){
//System.out.println(e.getAttributeValue("synsetid"));//, Namespace.getNamespace("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#")));
//System.out.println(e.getAttributeValue("wordid"));

try{
BufferedWriter bw= new BufferedWriter(new FileWriter("Ibrahim.txt"));
for(Element e : (List<Element>)racine.getChildren()){
bw.write(e.getAttributeValue("p"));

bw.newLine();


}
}
catch(FileNotFoundException d)
{
System.out.println("eee");
}
catch(IOException f)
{
System.out.println("fff");
}
System.out.println(""+a);

}




private void parse(){
SAXBuilder sxb = new SAXBuilder();
try{
document = sxb.build(xml);
racine = document.getRootElement();
}catch(Exception e){
e.printStackTrace();
}
}

public static void main(String[] args) {
new Filtrage(new File("إبراهيم"));
}
}


S'il vous plait avez vous des proposition.
Merci très bien

9 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
16 mars 2012 à 08:31
Bonjour,

Pour un truc aussi simple, j'utiliserais une expression régulière avec capturing group plutôt que de parser le fichier : "(.*)

"

C'est pas plus simple ca ?

public static void main(String[] args) {
String test="<html>ksdfhsdk df 

Le texte à récupérer

</html>";
Matcher matcher = Pattern.compile("(.*)

").matcher(test);
if (matcher.find() && matcher.groupCount()>=1) {
System.out.println(matcher.group(1));
}
}
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
16 mars 2012 à 08:36
Ha pardon, tu as plusieurs groupes a récupérer, ca ne marchera pas, tu vas être obligé d'utiliser un code bien plus complexe :)

public static void main(String[] args) {
String test="<html>ksdfhsdk df 

Le texte à récupérer

dfs
a recuperer aussi

</html>";
Matcher matcher = Pattern.compile("([^<]*)

").matcher(test);
while (matcher.find()) {
for(int i=0; i<matcher.groupCount(); i++){
System.out.println(matcher.group(i));
}
}
}
0
nacef007 Messages postés 28 Date d'inscription samedi 10 mars 2012 Statut Membre Dernière intervention 15 décembre 2012
16 mars 2012 à 14:50
Bonjour,
J'ai pas compris exactement qu'est ce que vous voulez dire par on n'a pas besoin de parser le fichier, comment alors entrer mon fichier comme paramètre pour qu'il puisse extraire les information. En plus ce code est ce qu'il va remplacer tout mon code ou seulement le void main.
S'il vous plais expliquer plus car j'ai extrêmement essayer sans arriver à une solution.
Merci très bien
0
nacef007 Messages postés 28 Date d'inscription samedi 10 mars 2012 Statut Membre Dernière intervention 15 décembre 2012
16 mars 2012 à 15:17
Bonjour,
j'ai essayé de changer ce code
for(Element e : (List<Element>)racine.getChildren()){
bw.write(e.getAttributeValue("p"));

bw.newLine();

par ce que vous m'avez donné et le résultat était
Le texte à récupérer


a recuperer aussi



comment je peut faire de sorte q'au lieu de m'afficher "Le texte à récupérer" il m'affiche vraiment le texte qui se trouve dans la balise
et merci encore une fois
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
16 mars 2012 à 20:40
Il suffit de d'appeler un repalaceAll("", "") et repalaceAll("

", "") et c'est réglé.
0
nacef007 Messages postés 28 Date d'inscription samedi 10 mars 2012 Statut Membre Dernière intervention 15 décembre 2012
17 mars 2012 à 03:58
Bonsoir Julien
je suis désolé encore pour le dérangement, mais le problème résiste encore.
J'ai fait
matcher.replaceAll("");
et aussi
test.replaceAll("","");
et toujours le meme résultat
Le texte à récupérer


a recuperer aussi



Si vous n'avez pas encore une autre solution pouvez vous me dire comment je peut supprimer touts les balise et ne laisser que les balise meme si la sortie sera un fichier XML aussi pas de problème.
S'il vous plais vous me guidez petit à petit car j'ai pas une grande idée sur l'XML donc si vous disposez d'un code complet veuillez me le proposer.
Je vous remercie très bien
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
17 mars 2012 à 07:31
Il ne faut pas le faire sur le matcher mais sur le String :

System.out.println(matcher.group(i).replaceAll("","").replaceAll(""));
0
nacef007 Messages postés 28 Date d'inscription samedi 10 mars 2012 Statut Membre Dernière intervention 15 décembre 2012
17 mars 2012 à 19:05
Bonsoir Julien
malheureusement je suis toujours dans le même problème en fait même en faisant
System.out.println(matcher.group(i).replaceAll("","").replaceAll(""));
il m'affiche toujours
Le texte à récupérer
a recuperer aussi
ce sont en fait ce que vous avez mis dans
String test="<html>ksdfhsdk df

Le texte à récupérer

dfs
a recuperer aussi

</html>";
est ce que je dois mettre quelques chose la bas au lieu de ces phrase ou quoi, quelle est la solution pour qu'il m'affiche vraiment le continu de la balise.
Merci Julien encore une fois et je suis désolé pour le dérangement.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
18 mars 2012 à 15:41
Ben, je suis assez étonné, là, c'est pas de la magie, c'est de la programmation !

Il faut appeler les méthodes sur la chaîne de caractères qui t'intéresse. Commence par charger le contenu de ton fichier texte dans une chaîne de caractères et appelle les méthodes dessus.
0
Rejoignez-nous