Voila, mon problème je dois récuperer des données dans un fichier xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
<scene exported_by="Christophe" formatVersion="1.0.1" previous_export_time="0" export_time="1335986756.02" >
	<nodes >
		<node name="Plane.005" >
			<position y="0.512080" x="-0.998885" z="0.960184" />
			<rotation qy="0.000000" qx="0.000000" qz="-0.707107" qw="0.707107" />
			<scale y="0.018538" x="0.018538" z="0.018538" />
			<game >
				<sensors />
				<actuators />
			</game>
			<entity anisotropic_friction="False" lock_trans_y="False" damping_trans="0.03999999910593033" damping_rot="0.10000000149011612" inertia_tensor="0.4000000059604645" actor="False" velocity_min="0.0" lock_trans_z="False" physics_type="STATIC" lock_trans_x="False" meshFile="Plane.008.mesh" friction_y="1.0" friction_x="1.0" friction_z="1.0" velocity_max="0.0" ghost="False" name="Plane.008" mass_radius="1.0" mass="1.0" lock_rot_x="False" lock_rot_y="False" lock_rot_z="False" />
		</node>
		<node name="Lamp3" >
				<position y="0.000002" x="0.000002" z="-0.000000" />
				<rotation qy="0.000000" qx="0.000000" qz="-0.000000" qw="1.000000" />
				<scale y="1.000000" x="1.000000" z="1.000000" />
				<game >
					<sensors />
					<actuators />
				</game>
				<light type="point" name="Point.001" powerScale="0.009999999776482582" >
					<position y="0.512080" x="-0.998885" z="0.960184" />
					<lightAttenuation range="5000" quadratic="0.0" constant="1.0" linear="0.04" />
					<colourDiffuse r="1.0" b="1.0" g="1.0" />
				</light>
 
		</node>
...
Ne vous inquiétez pas les balises se ferme après.
Voici le code java que j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;
 
public class DotSceneLoader {
 
	public static void main(String argv[]) {
 
	  try {
 
		File fXmlFile = new File("tunnel.xml");
		DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
		Document doc = dBuilder.parse(fXmlFile);
		doc.getDocumentElement().normalize();
 
		System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
		NodeList nList = doc.getElementsByTagName("node");
		System.out.println("-----------------------");
 
		for (int temp = 0; temp < 2/*nList.getLength()*/; temp++) {
 
		   Node nNode = nList.item(temp);
		   if (nNode.getNodeType() == Node.ELEMENT_NODE) {
 
		      Element eElement = (Element) nNode;
 		      System.out.println(eElement.getAttribute("name"));
 
 		      NodeList nList2=doc.getElementsByTagName("position");
 		      eElement=(Element) nList2.item(0);
 		      System.out.println("Position : "+ eElement.getAttribute("x"));
 
 
		   }
		}
	  } catch (Exception e) {
		e.printStackTrace();
	  }
  }
 
  private static String getTagValue(String sTag, Element eElement) {
	NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
 
        Node nValue = (Node) nlList.item(0);
 
	return nValue.getNodeValue();
  }
 
}
Le code du tutoriel, je crois du site, dans lequel j'ai modifier.
Mon problème est que je ne récupère pas bien les données du x dans la balise position dans le noeud nommé Lamp3. Je sais que sa vient de ma ligne de code avec le doc.
Mais je ne vois pas comment accéder à ces informations (position, rotation,scale,... de chaque "node"). La boucle for me sert à parcourir mes noeuds "node". J'ai réussi à le faire en C++ avec TinyXML mais ce n'est pas la même logique sous java.

Merci d'avance pour vos réponses et pour le temps que vous y consacrerez. Je viens vers vous en ultime recours, c'est pour un projet et ça fait deux semaine que je suis au même point.

Christophe.