Accueil > > > CLASSE UTILITAIRE POUR PARSER DES XML AVEC XPATH ET DOM.
CLASSE UTILITAIRE POUR PARSER DES XML AVEC XPATH ET DOM.
Information sur la source
Description
Après recherche sur la notion XPATH sur le site je n'ai pas trouvé mon bonheur. Je présente une classe utilitaire simple sans grande prétention permettant de faciliter le parsing de XML en utilisant des expressions XPATH.
Source
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
-
- import javax.xml.namespace.QName;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.ParserConfigurationException;
- import javax.xml.xpath.XPathConstants;
- import javax.xml.xpath.XPathExpression;
- import javax.xml.xpath.XPathExpressionException;
- import javax.xml.xpath.XPathFactory;
-
- import org.w3c.dom.Document;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import org.xml.sax.SAXException;
-
- /**
- * Classe utilitaire pour parsing Xpath avec DOM.
- *
- * @author Celphys
- */
- public final class XPathUtils {
-
- /**
- * Suppression du contructeur par defaut.
- */
- private XPathUtils () {
- }
-
- /**
- * Construction d'un objet DOM depuis un flux entrant.
- *
- * @param is
- * flux en entrée
- * @throws ParserConfigurationException
- * erreur configuration parser
- * @throws IOException
- * erreur lecture flux
- * @throws SAXException
- * erreur parsing flux
- * @throws ParserConfigurationException
- * exception business retrouvé
- * @return un objet document dom
- */
- public static Document getDomDocumentFromStream(final InputStream is)
- throws SAXException, IOException, ParserConfigurationException {
- return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);
- }
-
- /**
- * Evaluation d'une expression XPATH.
- *
- * @param document
- * document DOM.
- * @param expression
- * expression xpath.
- * @param retour
- * type élément retourné.
- * @return
- * element du XML.
- * @throws XPathExpressionException
- * erreur lors de la validation du XPATH.
- */
- private static Object getValueFromXPathDOM(final Document document, final String expression, final QName retour)
- throws XPathExpressionException {
- XPathFactory myXPathFactoy = XPathFactory.newInstance();
- XPathExpression exp = myXPathFactoy.newXPath().compile(expression);
- return exp.evaluate(document, retour);
- }
-
- /**
- * Récupération d'un attribut de type 'chaine de caractère' depuis son
- * expression XPATH.
- *
- * @param document
- * document DOM.
- * @param expression
- * expression xpath.
- * @return
- * attribut recherché
- * @throws XPathExpressionException
- * erreur lors de la validation du XPATH.
- */
- public static String getStringAttributeValueFromXPathDOM(final Document document, final String expression)
- throws XPathExpressionException {
- return (String) getValueFromXPathDOM(document, expression, XPathConstants.STRING);
- }
-
- /**
- * Récupération d'un attribut de type 'nombre' depuis son
- * expression XPATH.
- *
- * @param document
- * document DOM.
- * @param expression
- * expression xpath.
- * @return
- * attribut recherché
- * @throws XPathExpressionException
- * erreur lors de la validation du XPATH.
- */
- public static Double getDoubleAttributeValueFromXPathDOM(final Document document, final String expression)
- throws XPathExpressionException {
- return (Double) getValueFromXPathDOM(document, expression, XPathConstants.NUMBER);
- }
-
- /**
- * Récupération d'un attribut de type 'boolean' depuis son
- * expression XPATH.
- *
- * @param document
- * document DOM.
- * @param expression
- * expression xpath.
- * @return
- * attribut recherché
- * @throws XPathExpressionException
- * erreur lors de la validation du XPATH.
- */
- public static Boolean getBooleanAttributeValueFromXPathDOM(final Document document, final String expression)
- throws XPathExpressionException {
- return (Boolean) getValueFromXPathDOM(document, expression, XPathConstants.BOOLEAN);
- }
-
- /**
- * Récupération d'un attribut de type 'date' depuis son
- * expression XPATH.
- *
- * @param document
- * document DOM.
- * @param expression
- * expression xpath.
- * @param sdf
- * simple date format to parse attribute
- * @return
- * attribut recherché
- * @throws XPathExpressionException
- * erreur lors de la validation du XPATH.
- * @throws ParseException
- * erreur lors du parsing de la date, pattern non respecté.
- */
- public static Date getDateAttributeValueFromXPathDOM(final Document document, final String expression,
- final SimpleDateFormat sdf)
- throws XPathExpressionException, ParseException {
- String value = getStringAttributeValueFromXPathDOM(document, expression);
- return sdf.parse(value);
- }
-
- /**
- * Récupération d'un attribut de type 'date' depuis son
- * expression XPATH.
- *
- * @param document
- * document DOM.
- * @param expression
- * expression xpath.
- * @param datePattern
- * pattern pour la date.
- * @return
- * attribut recherché.
- * @throws XPathExpressionException
- * erreur lors de la validation du XPATH.
- * @throws ParseException
- * erreur lors du parsing de la date, pattern non respecté.
- */
- public static Date getDateAttributeValueFromXPathDOM(final Document document, final String expression,
- final String datePattern)
- throws XPathExpressionException, ParseException {
- /* Note :
- * Si un seul pattern dans votre application, préféré la méthode avec le simpleDateFormat pour ne pas recompiler
- * le pattern du SimpleDateFormat a chaque appel.
- */
- SimpleDateFormat localSdf = new SimpleDateFormat(datePattern);
- return getDateAttributeValueFromXPathDOM(document, expression, localSdf);
- }
-
- /**
- * Récupération d'un attribut de type 'date' depuis son
- * expression XPATH.
- *
- * @param document
- * document DOM.
- * @param expression
- * expression xpath.
- * @param sdf
- * simple date format.
- * @return
- * attribut recherché.
- * @throws XPathExpressionException
- * erreur lors de la validation du XPATH.
- * @throws ParseException
- * erreur lors du parsing de la date, pattern non respecté.
- */
- public static Calendar getCalendarAttributeValueFromXPathDOM(final Document document, final String expression,
- final SimpleDateFormat sdf)
- throws XPathExpressionException, ParseException {
- Date adate = getDateAttributeValueFromXPathDOM(document, expression, sdf);
- Calendar aCalendar = Calendar.getInstance();
- aCalendar.setTime(adate);
- return aCalendar;
- }
-
- /**
- * Récupération d'un attribut de type 'date' depuis son
- * expression XPATH.
- *
- * @param document
- * document DOM.
- * @param expression
- * expression xpath.
- * @param datePattern
- * pattern pour la date.
- * @return
- * attribut recherché.
- * @throws XPathExpressionException
- * erreur lors de la validation du XPATH.
- * @throws ParseException
- * erreur lors du parsing de la date, pattern non respecté.
- */
- public static Calendar getCalendarAttributeValueFromXPathDOM(final Document document, final String expression,
- final String datePattern)
- throws XPathExpressionException, ParseException {
- Date adate = getDateAttributeValueFromXPathDOM(document, expression, datePattern);
- Calendar aCalendar = Calendar.getInstance();
- aCalendar.setTime(adate);
- return aCalendar;
- }
-
- /**
- * Récupération d'un attribut de type chaine de caractère depuis son
- * expression XPATH.
- *
- * @param document
- * document DOM.
- * @param expression
- * expression xpath.
- * @return
- * attribut recherché
- * @throws XPathExpressionException
- * erreur lors de la validation du XPATH.
- */
- public static Node getNodeFromXPathDOM(final Document document, final String expression)
- throws XPathExpressionException {
- return (Node) getValueFromXPathDOM(document, expression, XPathConstants.NODE);
- }
-
- /**
- * Récupération d'un attribut de type chaine de caractère depuis son
- * expression XPATH.
- *
- * @param document
- * document DOM.
- * @param expression
- * expression xpath.
- * @return
- * attribut recherché
- * @throws XPathExpressionException
- * erreur lors de la validation du XPATH.
- */
- public static NodeList getNodeListFromXPathDOM(final Document document, final String expression)
- throws XPathExpressionException {
- return (NodeList) getValueFromXPathDOM(document, expression, XPathConstants.NODESET);
- }
-
- /**
- * Méthode pour tests.
- * Contenu du document Exemple :
- *
- * <racine>
- * <balise url="javafr" sourcefonctionne="true" annee="2007" miseenligne="28/08/2007">
- * <fichier nom="undocument.xml" />
- * <fichier nom="unautredocument.xml" />
- * </balise>
- * </racine>
- *
- * @param args
- * arguments.
- */
- public static void main(final String[] args) {
- // A Configurer
- String CHEMIN_FICHIER_POUR_VOS_TESTS = "D:/exemple.xml";
-
- try {
- FileInputStream fis = new FileInputStream(CHEMIN_FICHIER_POUR_VOS_TESTS);
- Document docDOM = XPathUtils.getDomDocumentFromStream(fis);
-
- // Attribut de type String
- String url = (String) XPathUtils.getStringAttributeValueFromXPathDOM(docDOM,
- "/racine/balise/attribute::url");
- System.out.println("URL : " + url);
-
- // Attribut de type integer
- Double annee = (Double) XPathUtils.getDoubleAttributeValueFromXPathDOM(docDOM,
- "/racine/balise/attribute::annee");
- System.out.println("ANNEE : " + annee);
-
- // Attribut de type boolean
- Boolean bool = (Boolean) XPathUtils.getBooleanAttributeValueFromXPathDOM(docDOM,
- "/racine/balise/attribute::sourcefonctionne");
- System.out.println("BOOLEAN : " + bool);
-
- // Attribut de type Date
- String pattern = "DD/MM/yyyy";
- Date date = (Date) XPathUtils.getDateAttributeValueFromXPathDOM(docDOM,
- "/racine/balise/attribute::miseenligne", pattern);
- System.out.println("DATE : " + date);
-
- // Attribut de type NodeSet
- NodeList list = XPathUtils.getNodeListFromXPathDOM(docDOM,
- "/racine/balise/fichier");
- System.out.println("Longueur : " + list.getLength());
-
- // Attribut de type Node
- Node noeud = (Node) XPathUtils.getNodeFromXPathDOM(docDOM,
- "/racine/balise");
- System.out.println("Fichier : " + noeud.getNodeName());
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- }
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
/**
* Classe utilitaire pour parsing Xpath avec DOM.
*
* @author Celphys
*/
public final class XPathUtils {
/**
* Suppression du contructeur par defaut.
*/
private XPathUtils () {
}
/**
* Construction d'un objet DOM depuis un flux entrant.
*
* @param is
* flux en entrée
* @throws ParserConfigurationException
* erreur configuration parser
* @throws IOException
* erreur lecture flux
* @throws SAXException
* erreur parsing flux
* @throws ParserConfigurationException
* exception business retrouvé
* @return un objet document dom
*/
public static Document getDomDocumentFromStream(final InputStream is)
throws SAXException, IOException, ParserConfigurationException {
return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);
}
/**
* Evaluation d'une expression XPATH.
*
* @param document
* document DOM.
* @param expression
* expression xpath.
* @param retour
* type élément retourné.
* @return
* element du XML.
* @throws XPathExpressionException
* erreur lors de la validation du XPATH.
*/
private static Object getValueFromXPathDOM(final Document document, final String expression, final QName retour)
throws XPathExpressionException {
XPathFactory myXPathFactoy = XPathFactory.newInstance();
XPathExpression exp = myXPathFactoy.newXPath().compile(expression);
return exp.evaluate(document, retour);
}
/**
* Récupération d'un attribut de type 'chaine de caractère' depuis son
* expression XPATH.
*
* @param document
* document DOM.
* @param expression
* expression xpath.
* @return
* attribut recherché
* @throws XPathExpressionException
* erreur lors de la validation du XPATH.
*/
public static String getStringAttributeValueFromXPathDOM(final Document document, final String expression)
throws XPathExpressionException {
return (String) getValueFromXPathDOM(document, expression, XPathConstants.STRING);
}
/**
* Récupération d'un attribut de type 'nombre' depuis son
* expression XPATH.
*
* @param document
* document DOM.
* @param expression
* expression xpath.
* @return
* attribut recherché
* @throws XPathExpressionException
* erreur lors de la validation du XPATH.
*/
public static Double getDoubleAttributeValueFromXPathDOM(final Document document, final String expression)
throws XPathExpressionException {
return (Double) getValueFromXPathDOM(document, expression, XPathConstants.NUMBER);
}
/**
* Récupération d'un attribut de type 'boolean' depuis son
* expression XPATH.
*
* @param document
* document DOM.
* @param expression
* expression xpath.
* @return
* attribut recherché
* @throws XPathExpressionException
* erreur lors de la validation du XPATH.
*/
public static Boolean getBooleanAttributeValueFromXPathDOM(final Document document, final String expression)
throws XPathExpressionException {
return (Boolean) getValueFromXPathDOM(document, expression, XPathConstants.BOOLEAN);
}
/**
* Récupération d'un attribut de type 'date' depuis son
* expression XPATH.
*
* @param document
* document DOM.
* @param expression
* expression xpath.
* @param sdf
* simple date format to parse attribute
* @return
* attribut recherché
* @throws XPathExpressionException
* erreur lors de la validation du XPATH.
* @throws ParseException
* erreur lors du parsing de la date, pattern non respecté.
*/
public static Date getDateAttributeValueFromXPathDOM(final Document document, final String expression,
final SimpleDateFormat sdf)
throws XPathExpressionException, ParseException {
String value = getStringAttributeValueFromXPathDOM(document, expression);
return sdf.parse(value);
}
/**
* Récupération d'un attribut de type 'date' depuis son
* expression XPATH.
*
* @param document
* document DOM.
* @param expression
* expression xpath.
* @param datePattern
* pattern pour la date.
* @return
* attribut recherché.
* @throws XPathExpressionException
* erreur lors de la validation du XPATH.
* @throws ParseException
* erreur lors du parsing de la date, pattern non respecté.
*/
public static Date getDateAttributeValueFromXPathDOM(final Document document, final String expression,
final String datePattern)
throws XPathExpressionException, ParseException {
/* Note :
* Si un seul pattern dans votre application, préféré la méthode avec le simpleDateFormat pour ne pas recompiler
* le pattern du SimpleDateFormat a chaque appel.
*/
SimpleDateFormat localSdf = new SimpleDateFormat(datePattern);
return getDateAttributeValueFromXPathDOM(document, expression, localSdf);
}
/**
* Récupération d'un attribut de type 'date' depuis son
* expression XPATH.
*
* @param document
* document DOM.
* @param expression
* expression xpath.
* @param sdf
* simple date format.
* @return
* attribut recherché.
* @throws XPathExpressionException
* erreur lors de la validation du XPATH.
* @throws ParseException
* erreur lors du parsing de la date, pattern non respecté.
*/
public static Calendar getCalendarAttributeValueFromXPathDOM(final Document document, final String expression,
final SimpleDateFormat sdf)
throws XPathExpressionException, ParseException {
Date adate = getDateAttributeValueFromXPathDOM(document, expression, sdf);
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(adate);
return aCalendar;
}
/**
* Récupération d'un attribut de type 'date' depuis son
* expression XPATH.
*
* @param document
* document DOM.
* @param expression
* expression xpath.
* @param datePattern
* pattern pour la date.
* @return
* attribut recherché.
* @throws XPathExpressionException
* erreur lors de la validation du XPATH.
* @throws ParseException
* erreur lors du parsing de la date, pattern non respecté.
*/
public static Calendar getCalendarAttributeValueFromXPathDOM(final Document document, final String expression,
final String datePattern)
throws XPathExpressionException, ParseException {
Date adate = getDateAttributeValueFromXPathDOM(document, expression, datePattern);
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(adate);
return aCalendar;
}
/**
* Récupération d'un attribut de type chaine de caractère depuis son
* expression XPATH.
*
* @param document
* document DOM.
* @param expression
* expression xpath.
* @return
* attribut recherché
* @throws XPathExpressionException
* erreur lors de la validation du XPATH.
*/
public static Node getNodeFromXPathDOM(final Document document, final String expression)
throws XPathExpressionException {
return (Node) getValueFromXPathDOM(document, expression, XPathConstants.NODE);
}
/**
* Récupération d'un attribut de type chaine de caractère depuis son
* expression XPATH.
*
* @param document
* document DOM.
* @param expression
* expression xpath.
* @return
* attribut recherché
* @throws XPathExpressionException
* erreur lors de la validation du XPATH.
*/
public static NodeList getNodeListFromXPathDOM(final Document document, final String expression)
throws XPathExpressionException {
return (NodeList) getValueFromXPathDOM(document, expression, XPathConstants.NODESET);
}
/**
* Méthode pour tests.
* Contenu du document Exemple :
*
* <racine>
* <balise url="javafr" sourcefonctionne="true" annee="2007" miseenligne="28/08/2007">
* <fichier nom="undocument.xml" />
* <fichier nom="unautredocument.xml" />
* </balise>
* </racine>
*
* @param args
* arguments.
*/
public static void main(final String[] args) {
// A Configurer
String CHEMIN_FICHIER_POUR_VOS_TESTS = "D:/exemple.xml";
try {
FileInputStream fis = new FileInputStream(CHEMIN_FICHIER_POUR_VOS_TESTS);
Document docDOM = XPathUtils.getDomDocumentFromStream(fis);
// Attribut de type String
String url = (String) XPathUtils.getStringAttributeValueFromXPathDOM(docDOM,
"/racine/balise/attribute::url");
System.out.println("URL : " + url);
// Attribut de type integer
Double annee = (Double) XPathUtils.getDoubleAttributeValueFromXPathDOM(docDOM,
"/racine/balise/attribute::annee");
System.out.println("ANNEE : " + annee);
// Attribut de type boolean
Boolean bool = (Boolean) XPathUtils.getBooleanAttributeValueFromXPathDOM(docDOM,
"/racine/balise/attribute::sourcefonctionne");
System.out.println("BOOLEAN : " + bool);
// Attribut de type Date
String pattern = "DD/MM/yyyy";
Date date = (Date) XPathUtils.getDateAttributeValueFromXPathDOM(docDOM,
"/racine/balise/attribute::miseenligne", pattern);
System.out.println("DATE : " + date);
// Attribut de type NodeSet
NodeList list = XPathUtils.getNodeListFromXPathDOM(docDOM,
"/racine/balise/fichier");
System.out.println("Longueur : " + list.getLength());
// Attribut de type Node
Node noeud = (Node) XPathUtils.getNodeFromXPathDOM(docDOM,
"/racine/balise");
System.out.println("Fichier : " + noeud.getNodeName());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Conclusion
La méthode main est à sortir de la classe utilitaire. Elle propose un exemple pour se faire une meilleure idée des l'applications de cette classe. Je joins un fichier exemple de xml.
Historique
- 12 avril 2008 19:39:31 :
- Dans la méthode main remplacement des "DOmUtils" par XPathUtil s.. nom de la classe présentée.
- 12 mars 2009 00:13:58 :
- aaa
Sources de la même categorie
"PROGRAMMEUR", EST UN PROGRAMME QUI PERMET DE TAPER QUELQUE ..."PROGRAMMEUR", EST UN PROGRAMME QUI PERMET DE TAPER QUELQUE CHOSE DANS UN BLOC-NOTE ET DE LE CONVERTIRE EN FICHIER DE PROGRAMMATION AVEC LE CODE SOURCE."Programmeur", est un programme pour convertire du "langage humain":
affiche, variable, main (exception), ...
En:
System.out.println("");, int/lo...
par edouard333
"NARRATEUR", PROGRAMME QUI "LIT" SE QU'ON ÉCRIT..."NARRATEUR", PROGRAMME QUI "LIT" SE QU'ON ÉCRIT..."Narrateur" est programme qui "lit" se qu'on écrit, mais je ne l'ai pas encore fini mais je le met pour voir si ça à de l'intérêt... Le programme n'es...
par edouard333
RENAME-MOARRENAME-MOARProgramme permettant de renommer plusieurs fichiers d'un répertoire sélectionné.
On peut :
- Changer le nom au complet en ajoutant une partie var...
par cotepierrot
DWIKI (DESKTOPWIKI)DWIKI (DESKTOPWIKI)Un petit wiki en Java. Il s'agit d'un projet scolaire de 2008. J'apprécierais vos commentaires car un certain prof que je ne nommerai pas a été très s...
par xsimo
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
probleme de balise html avec xml et dom [ par lolofx ]
Bonjour,voila, J'ai une base de donnees contenant des balise html et qd je cree mon fichier xml avec dom, il me remplace automatiquement "<" et "&l
dom, caractere speciaux en xml [ par lolofx ]
Bonjour,voila, J'ai une base de donnees contenant des balise html et qd je cree mon fichier xml avec dom, il me remplace automatiquement "<" et "&l
DOM [ par demonc ]
Bonjour, j'ai un problème avec DOM :Lorsque je supprime un élément ca crée des espaces vides dans le fichier XML et lorsque j'ajoute des éléments ils
recherche xpath ds fichier xml [ par fredmorvant29 ]
bonjour, je souhaite faire une recherche en java dans un fichier xml. je osuhaite utiliser le parseur DOM et faire une recherche à l'aide de xpath. en
modif fichier xml lors parcours DOM [ par smaugg ]
Bonjour les gens!!!Voila mon problème:Je doi utiliser le DOM pour exploiter et créer un fichier XML. Juske la tou va bien.Par contre, lorsque je modif
JAVA & XML DOM [ par Titiboon ]
Bonjour à tous,Je sais parcourir un document xml de bout en bout en utilisant java et dom mais je n'arrive pas à commencer de parser le docu
XML Write & Read [ par Bryce_74 ]
Bonsoir, je voudrais développer une application Java permettant de se connecter à plusieurs base de données. Je m'occupe de dévelo
xml vers sql: DOM ou SAX? [ par janolapino ]
Bonjour,Je souhaite écrire le contenu d'un fichier xml vers une base mysql. Mon coeur balance entre entre DOM et SAX (mon coeur un peu influenc&#
XML=>parsing [ par sheorogath ]
bjr a tous ,on parle beaucoup du xml alors je me suis dit pourquoi ne pas essayer !!je me creer un beau fichier xml en respectant les balise , ouvrant
[Axis][SOAP/DOM] SOAPHeaderElement.appendChild() => ClassCastException [ par broidsy ]
Bonjour, Je suis en train d'essayé de construire des HeaderSOAP personalisés pour des webservices, mais j'ai une erreur de cast lorsque j'ajoute un n
|
Derniers Blogs
TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|