Digg StumbleUpon LinkedIn YouTube Flickr Facebook Twitter RSS Reset

Google Projet Ara : prix et date de sortie du smartphone modulable dévoilés

On se souvient du projet chinois avec le ZTE Eco-Mobius. Un autre projet de smartphone modulaire fait l’actualité depuis plusieurs mois, c’est le concept Phonebloks maintenant appelé Projet Ara et travaillé par Google,...
Comments Off on Java-source: Trouver le nombre de fichier dans un zip

Java-source: Trouver le nombre de fichier dans un zip

Numericable s’engage à faire croître l’activité et l’emploi chez SFR

S’il met la main sur SFR, le câblo-opérateur ne licenciera pas et investira massivement dans la fibre. Il veut faire du futur SFR un grand acteur du câble et un fleuron du CAC 40. Alors que Numericable peaufine depuis plus...
Comments Off on Java XML: Accéder à un élément à partir de son parent

Java XML: Accéder à un élément à partir de son parent

Comments Off on Java: Trouver le containeur avec une valeur d’attribut ou le créer et le configurer

Java: Trouver le containeur avec une valeur d’attribut ou le créer et le configurer

Gaston lagaffe : un Google Doodle pour les 57 ans de l’anti-héros de Franquin et Delporte

Une maladresse, une explosion, de la cuisine expérimentale et un talent fou à trouver des manières pour ne pas travailler, vous l’aurez tous reconnu : Gaston Lagaffe ! Google célèbre aujourd’hui les 57 ans de l’incorrigible...

Windows 8.1, la mise à jour serait lancée quand le support pour XP se terminera

Vous voulez peut-être entourer la date du 8 Avril sur votre calendrier, car ce jour-là, le support pour Windows XP se termine. Il y a toujours une lueur d’espoir derrière chaque nuage, et Microsoft pourrait très bien présenter Windows...
Comments Off on Java XML: Comparer deux nœuds DOM

Java XML: Comparer deux nœuds DOM

Download /***** Code de MesExemples.com *******/   /** *  Licensed to the Apache Software Foundation (ASF) under one *  or more contributor license agreements.  See the NOTICE file *  distributed with this work for additional information *  regarding copyright ownership.  The ASF licenses this file *  to you under the Apache License, Version 2.0 (the *  "License"); you may not use this file except in compliance *  with the License.  You may obtain a copy of the License at * *    http://www.apache.org/licenses/LICENSE-2.0 * *  Unless required by applicable law or agreed to in writing, *  software distributed under the License is distributed on an *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *  KIND, either express or implied.  See the License for the *  specific language governing permissions and limitations *  under the License. */import java.util.ArrayList;import java.util.List;import org.w3c.dom.Attr;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.w3c.dom.Text;/** * @version $Rev: 514087 $ $Date: 2007-03-03 01:13:40 -0500 (Sat, 03 Mar 2007) $ */public class DOMUtils {  private static void trimEmptyTextNodes(Node node) {    Element element = null;    if (node instanceof Document) {      element = ((Document) node).getDocumentElement();    } else if (node instanceof Element) {      element = (Element) node;    } else {      return;    }    List<Node> nodesToRemove = new ArrayList<Node>();    NodeList children = element.getChildNodes();    for (int i = 0; i < children.getLength(); i++) {      Node child = children.item(i);      if (child instanceof Element) {        trimEmptyTextNodes(child);      } else if (child instanceof Text) {        Text t = (Text) child;        if (t.getData().trim().length() == 0) {          nodesToRemove.add(child);        }      }    }    for (Node n : nodesToRemove) {      element.removeChild(n);    }  }  public static void compareNodes(Node expected, Node actual, boolean trimEmptyTextNodes)      throws Exception {    if (trimEmptyTextNodes) {      trimEmptyTextNodes(expected);      trimEmptyTextNodes(actual);    }    compareNodes(expected, actual);  }  public static void compareNodes(Node expected, Node actual) throws Exception {    if (expected.getNodeType() != actual.getNodeType()) {      throw new Exception("Different types of nodes: " + expected + " " + actual);    }    if (expected instanceof Document) {      Document expectedDoc = (Document) expected;      Document actualDoc = (Document) actual;      compareNodes(expectedDoc.getDocumentElement(), actualDoc.getDocumentElement());    } else if (expected instanceof Element) {      Element expectedElement = (Element) expected;      Element actualElement = (Element) actual;      // compare element names      if (!expectedElement.getLocalName().equals(actualElement.getLocalName())) {        throw new Exception("Element names do not match: " + expectedElement.getLocalName() + " "            + actualElement.getLocalName());      }      // compare element ns      String expectedNS = expectedElement.getNamespaceURI();      String actualNS = actualElement.getNamespaceURI();      if ((expectedNS == null &#038;& actualNS != null)          || (expectedNS != null &#038;& !expectedNS.equals(actualNS))) {        throw new Exception("Element namespaces names do not match: " + expectedNS + " " + actualNS);      }      String elementName = "{" + expectedElement.getNamespaceURI() + "}"          + actualElement.getLocalName();      // compare attributes      NamedNodeMap expectedAttrs = expectedElement.getAttributes();      NamedNodeMap actualAttrs = actualElement.getAttributes();      if (countNonNamespaceAttribures(expectedAttrs) != countNonNamespaceAttribures(actualAttrs)) {        throw new Exception(elementName + ": Number of attributes do not match up: "            + countNonNamespaceAttribures(expectedAttrs) + " "            + countNonNamespaceAttribures(actualAttrs));      }      for (int i = 0; i < expectedAttrs.getLength(); i++) {        Attr expectedAttr = (Attr) expectedAttrs.item(i);        if (expectedAttr.getName().startsWith("xmlns")) {          continue;        }        Attr actualAttr = null;        if (expectedAttr.getNamespaceURI() == null) {          actualAttr = (Attr) actualAttrs.getNamedItem(expectedAttr.getName());        } else {          actualAttr = (Attr) actualAttrs.getNamedItemNS(expectedAttr.getNamespaceURI(),              expectedAttr.getLocalName());        }        if (actualAttr == null) {          throw new Exception(elementName + ": No attribute found:" + expectedAttr);        }        if (!expectedAttr.getValue().equals(actualAttr.getValue())) {          throw new Exception(elementName + ": Attribute values do not match: "              + expectedAttr.getValue() + " " + actualAttr.getValue());        }      }      // compare children      NodeList expectedChildren = expectedElement.getChildNodes();      NodeList actualChildren = actualElement.getChildNodes();      if (expectedChildren.getLength() != actualChildren.getLength()) {        throw new Exception(elementName + ": Number of children do not match up: "            + expectedChildren.getLength() + " " + actualChildren.getLength());      }      for (int i = 0; i < expectedChildren.getLength(); i++) {        Node expectedChild = expectedChildren.item(i);        Node actualChild = actualChildren.item(i);        compareNodes(expectedChild, actualChild);      }    } else if (expected instanceof Text) {      String expectedData = ((Text) expected).getData().trim();      String actualData = ((Text) actual).getData().trim();      if (!expectedData.equals(actualData)) {        throw new Exception("Text does not match: " + expectedData + " " + actualData);      }    }  }  private static int countNonNamespaceAttribures(NamedNodeMap attrs) {    int n = 0;    for (int i = 0; i < attrs.getLength(); i++) {      Attr attr = (Attr) attrs.item(i);      if (!attr.getName().startsWith("xmlns")) {        n++;      }    }    return n;  }}          ...
Comments Off on Javascript: Exemple d’utilisation de Time

Javascript: Exemple d’utilisation de Time

iWatch : des écouteurs ‘biométriques’ en préparation chez Apple ?

Les choses semblent s’activer autour de l’iWatch, chez Apple, et le moment où la montre connectée de la firme sera présentée approche. Et aujourd’hui, on en sait un peu plus sur ce qui sera surement l’un de ses accessoires...