Problem mit XML Parsen

Shizzl_chrizzl

Erfahrenes Mitglied
Hi,
ich hab n kleinens Problem mit dem Parsen einer xml-File.
Ich möchte die XML-File im Anhang parsen. Das Einlesen funktioniert einwandfrei. Auseinanderpflücken kann ich sie auch, nur noch nicht so wie ich es gerne möchte bzw. bin ich neu auf dem Gebiet und kenne wahrscheinlich einige Kniffe noch nicht.

Ich will die xml-File einfach in ihre Ebenen zerlegen. Sprich die Group in einen Vektor, die Items der Groups in einen anderen Vektor und dann mit den vektoren JTabbedPanes erzeugen deren Namen im Group Vektor und deren Elemente im Items-Vektor.
Hier beginnt es schon mal ich weis nicht ob das der beste Weg ist, aber ich denke mal das das eine vernüniftige Herangehensweise sein dürfte.

Ich stell mal meinen bisherigen Versuch rein und hoff das ihr mich in die richtige Richtungen schubsen könnt. Hier funktioniert das Parsen zwar schon aber ich kann es nicth in die einzelnen Ebenen zerlegen sondern nur stumpf element nach element parsen.

Code:
   try {
   		Vector vRoots = new Vector();
   	
   		Element nl = d.getDocumentElement();
   		NodeList list = nl.getChildNodes();
   		
   		for (int i= 0; i<list.getLength();i++){
   		
   		  Node child = list.item(i);
   			
   		   if(child instanceof Element)
   		   {  
   			 Element childElement = (Element)child;
   			 String childName = childElement.getTagName();
   			
   			 vRoots.add(childName);
   		  
 		 	if (((Element)list.item(i)).getTagName().equals("EXTENSIONS")){
   			  
 		 		NodeList extensionList = list.item(i).getChildNodes();
 					xmlTree(extensionList);
   				}
   		   }
   		}
   		
   
   	} catch (Throwable t) {
   		t.printStackTrace();
   	  }
   
   	}
     
   	private void xmlTree(NodeList nl){
   		NodeList extensionList = nl;
   			for (int c = 0; c<extensionList.getLength(); c++){
   				
 		 	Vector vXMLItems = new Vector(); 	
 				Node extensionChild = extensionList.item(c);
   				
 				if(extensionChild instanceof Element){
   					
 		 		Element extensionChildElement = (Element)extensionChild;
 		 	// System.out.println(extensionChildElement.getTagName());
 		 		String extensionChildName = extensionChildElement.getTagName();
 		 	 if(extensionChildElement.getTagName().trim().equals("NAME")){
 						
 		 		Text textNode = (Text)extensionChildElement.getFirstChild();
 		 		String text = textNode.getData().trim();
   					
 					vXMLItems.add(text);
 					System.out.println(c + text);
   					}
 		 		if(c == 3)jOutlookBarWikiMain.setJOutlookBar(vXMLItems);
 		 		NodeList itemList = extensionList.item(c).getChildNodes(); 		 	
 		 		if(itemList != null)xmlTree(itemList);
   				}
   			}
   
   	}

Ich will nur die Group "Extensions" parsen , nur so als Info für das Vorgehen im Quelltext.
 
Hallo!

Also ich würde das ganze mit XPath machen, jedoch wäre es sehr hilfreich noch das dazu passende XML File zu Gesicht zu bekommen ;-)

Gruß Tom
 
Hallo!

Weshalb willst du die Elemente zuerst in einen Vector packen wenn du daraus später sowieso einen JTabbedPane aufbauen willst? Du könntest den JTabbedPane doch direkt während des parsens Aufbauen. Weirerhin solltest du dir mal die Beispiele im build/samples Verzeichnis der JDOM Distribution anschauen...
Weshalb muss es eigentlich unbedingt JDOM sein?

Gruß Tom
 
schau genau sowas mein ich mit kniffe. Mir fehlt da noch die Erfahrung , deshalb hab ich ja nachgefragt. Das mit JDOM geht von der Arbeit aus, die ham das so vorgeschrieben.

Aber gut dann versuch ich das mal so
 
Zurück