JTree - Nur Elemente mit Attributen einfügen

Status
Nicht offen für weitere Antworten.

SebastianK

Mitglied
Hallo,

ich versuche mich im Moment mit Java und XML, komme nur nicht weiter.

Ich möchte eine XML-Datei einlesen und in einem JTree darstellen. Ich habe nur das Problem, dass Einträge erscheinen die keinen Namen besitzen und ich nicht weiß wo mein Fehler liegt.


Die XML-Datei die ich einlese:
Code:
<?xml version="1.0" ?>
<root>
	<person name="Meier" alter="30" />
	
	<person name="Schulze" alter ="20">
		<vorname>Harald</vorname>
		<vater name="Schulze2" alter="50"/>
	</person>
</root>


Der JTree sieht dann so aus:
jtree.png



Der Code:
Code:
private void read(File file, DefaultMutableTreeNode root) {
	try {
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();
		doc = db.parse(file);

 		buildTree(doc, root);
 	} catch (Exception e) { JOptionPane.showMessageDialog(this,e); }
}//read

private void buildTree(Node node,DefaultMutableTreeNode parentTreeNode) {
	DefaultMutableTreeNode treeNode = new DefaultMutableTreeNode();

	switch (node.getNodeType()) {
	case Node.COMMENT_NODE: 
		treeNode.setUserObject(node.getTextContent());
		break;
 			
	case Node.ELEMENT_NODE: 
		String s = getAttr(node);		
		treeNode.setUserObject(s);
		break;
 			
	case Node.TEXT_NODE: 
		String textContent = node.getTextContent().trim();
		if (textContent.equals("")) {
			return;
		}
		treeNode.setUserObject(textContent);
		break;	
 	}//switch
 
 	parentTreeNode.add(treeNode);
 		
 	if (node.hasChildNodes()) {
 		NodeList list = node.getChildNodes();
 		for (int i = 0, len = list.getLength(); i < len; i++) {
 			buildTree(list.item(i), treeNode);
 		}
 	}
}//buildTree

public String getAttr(Node node) {
	StringBuilder s = new StringBuilder();
	NamedNodeMap atts = node.getAttributes(); //Menge der Attribute
	int n = atts.getLength();
	if(n > 0) {
		for(int i=0; i<n; i++) {
			Attr nodeAttr = (Attr) atts.item(i);

			if (nodeAttr.getNodeName().equals("name"))
				s.append(nodeAttr.getNodeValue());
		}

	}
	if (n < 1) {
		return null;
	}
	return s.toString();
}//getAttr


Angezeigt soll im JTree lediglich das Attribut 'name' eines Elementes aus der XML-Datei.
Dabei stören mich jetzt die ersten beiden Knoten ohne Namen und der leere Knoten unter "Schulze".

Als Lösung hatte ich mir vorgestellt nur Elemente aus der XML-Datei eizufügen, die ein Attribut "name" besitzen (dabei würde ja der Knoten "Harald" rausfallen, was aber nicht weiter störend wäre). Bekomme ich allerdings nicht hin.
Würd mich freuen, wenn mir jemand weiterhelfen könnte.

Nehme natürliche auch andere Lösungen an, um die leeren Knoten nicht anzuzeigen.
 
B

Beni

Gast
Nur eine Idee: wenn ein TreeNode leer ist, dann wird er garnicht erst eingefügt.
Code:
DefaultMutableTreeNode parent = ...
Node node = ...

DefaultMutableTreeNode treeNode;
if( [node ist leer] ){
  treeNode = parent;
}
else{
  treeNode = new DefaultMutableTreeNode( [name] );
  parent.add( treeNode );
}

 if (node.hasChildNodes()) {
      NodeList list = node.getChildNodes();
      for (int i = 0, len = list.getLength(); i < len; i++) {
         buildTree(list.item(i), treeNode);
      }
   }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Xml-Datei in JTree anzeigen und Elemente ausblenden XML & JSON 2
P JTree aus XML XML & JSON 2
T XML JTree änder sich nicht XML & JSON 2
F XML erzeugen aus JTree und wieder einlesen... XML & JSON 6
M XML in Jtree bearbeiten XML & JSON 2
G Probleme mit XML und JTree XML & JSON 9
F JTree zu XML XML & JSON 2
D JTree aus XML Datei erstellen & JTree wieder in XML spei XML & JSON 4
J XML-Dokument / JTree XML & JSON 7
P Knoten-Attribute einer xsd-Datei in einem JTree auslesen XML & JSON 18
R Jtree + Attribute XML & JSON 6
R xml mit Jdom lesen und als Jtree anzeigen. XML & JSON 9
Z Erzeugung einer Referenz von Knoten in JTree auf DOMTree XML & JSON 3
J xml in jtree: kleine Hilfe nötig XML & JSON 3
A JTree Struktur aus XML (mit Attributen) XML & JSON 12
L XML einlesen gleichnamige Elemente XML & JSON 5
J Parent- und Child-Elemente mit gleiche Namen, geht das ? XML & JSON 1
S XML - Bestehende Elemente ändern XML & JSON 1
C JAXB: XML-Elemente einlesen und als XML-Attribute ausgeben XML & JSON 7
R Verschachtelung gleichnamiger Elemente XML & JSON 7
D optionale Elemente mit defaultwerten werden in xml miterzeugt XML & JSON 2
A Elemente aus mehreren XML-Dateien zu einem zusammenfügen XML & JSON 5
G JAXB und verschachtelte Elemente? XML & JSON 6
J Anzahl der Elemente in einem XML-Dokument auslesen XML & JSON 7
F Hilfe beim bearbeiten von XML elemente XML & JSON 3
G Wieviele Elemente von TagName, ich brings nicht hin XML & JSON 5
G Leere Elemente verhindern XML & JSON 7
aze JaxB Elemente in LinkedHashSet werden nicht wiededergegeben XML & JSON 3
E XML Datei einlesen und Elemente in der Console ausgeben XML & JSON 6
D Tabs/Einrückungen der XML-Elemente gehen beim Schreiben verloren XML & JSON 5
Z XML auslesen, Elemente daraus entfernen und als neue XML zurückgeben XML & JSON 2
T Elemente zählen mit JDOM in XML XML & JSON 7
G XML Parser Fehler, zwei gleiche kind-Elemente XML & JSON 7
F Elemente sortieren lassen XML & JSON 2
I Editor, der nur Elemente einfuegt, die nach xsd zulaessig XML & JSON 2
G xml einlesen und bestimmte Elemente an eine gui_Klasse überg XML & JSON 25
H Elemente eines Node auslesen XML & JSON 2
M XML Elemente mit JDOM durch Text ersetzen XML & JSON 2
P JDom nimmt keine Elemente an. XML & JSON 3
M Elemente mit Prefix via JDOM erstellen XML & JSON 6
J Jdom Elemente lesen XML & JSON 5
P zugriff auf gewuenschte elemente klapp nicht. XML & JSON 3
T Einfach nur die Elemente einer XML Datei auslesen :( XML & JSON 10
T Elemente aus XML-File löschen (JDom) XML & JSON 9
G Xml Elemente in eine Liste abspeichern! XML & JSON 2
G Elemente in XML XML & JSON 4
G brauche Tips, wie ich am besten auf Elemente zugreife XML & JSON 5
S JDOM Elemente suchen XML & JSON 2
Z XML Import/Export mit Support von unbekannten Attributen/Elementen XML & JSON 4
krgewb XML mit Attributen und Inhalt innerhalb der Tags XML & JSON 1
B Klassen mit generischen Attributen mit Jackson lesen XML & JSON 4
E XML Datei mit DOM auslesen (Text mit Attributen) XML & JSON 2
B ATTLIST: eigene Attributen XML & JSON 8
H xml-Datei mit Attributen einlesen XML & JSON 3
R Problem beim Auslesen von Attributen XML & JSON 4

Ähnliche Java Themen

Neue Themen


Oben