2009-10-13 6 views
0

Je suis un programmeur C++ mais nouveau dans le monde java. Je dois afficher les données XML directement dans un jtable.Afficher directement l'enregistrement XML dans l'enregistrement jtable

Say,

le XML est le format suivant

<Name> Tom </Name> 
<DateofBirth> 12/3/1985 </DateofBirth> 
<country> US </country> 

Ensuite, la table doit être dispalyed comme suit

Name |  DateofBirth | Country 

Tom  12/3/1985  Us 

Est-il faisable? Si oui, quelqu'un peut-il fournir un échantillon?

Répondre

1

Oui, c'est très faisable. Il y a 2 étapes à ce processus. Le premier est d'analyser le xml. Certains exemples de code Java pour l'analyse syntaxique xml serait (cet exemple montre l'obtention d'un nœud « personne » à partir du fichier xml, mais il peut facilement être adapté à votre fichier xml):

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder parser = factory.newDocumentBuilder(); 
Document document = parser.parse("xml/sample.xml"); 
NodeList personNodes = document.getElementsByTagName("person"); 
List<String> names = new LinkedList<String>(); 
for (int i = 0; i < personNodes.getLength(); i++) { 
    String firstName = null; 
    String lastName = null; 
    Node personNode = personNodes.item(i); 
    NodeList children = personNode.getChildNodes(); 
    for (int j = 0; j < children.getLength(); j++) { 
    Node child = children.item(j); 
    String nodeName = child.getNodeName(); 
    String nodeValue = child.getTextContent(); 
    if ("firstName".equals(nodeName)) { 
    firstName = nodeValue; 
    } else if ("lastName".equals(nodeName)) { 
    lastName = nodeValue; 
    } 
} 
names.add(firstName + " " + lastName); 
} 

Une fois que vous avez extrait les données besoin, créé un nouveau JTable qui utilise ces données. Le constructeur JTable plus simple à utiliser pour vos besoins serait:

JTable(Object[][] rowData, Object[] columnNames) 

Il existe des moyens plus avancés et mieux de le faire (par exemple avec la liaison des données cadres), mais cela est sans aucun doute un bon point de départ.

+0

Merci de partager le code, a réussi à trouver le même sur la page suivante. Merci!!! http://www.developerfusion.com/code/2064/a-simple-way-to-read-an-xml-file-in-java/ – coolcake

+0

Pas de problème. Je l'ai pris de mon blog http://jeffastorey.blogspot.com/2009/10/getting-groovy-with-xml-parsing.html et montré comment vous pouvez le faire en seulement 2 lignes avec groovy (le mettre dans le JTable sera un couple de plus de lignes). –

0

C'est certainement faisable.

Je voudrais vérifier la bibliothèque JDOM, qui fournit une API simple à XML. Il est plus facile à utiliser que les bibliothèques DOM/SAX standard mais peu maniables.

Si vous avez un schéma pour le XML ci-dessus, JAXB peut être intéressant, bien qu'il soit assez lourd. Toutefois, je ne peux pas conseiller de manière fiable sur le côté Swing/JTable. Je suis sûr qu'il y a beaucoup de gens qui peuvent s'occuper de ce côté des choses.

0

TableModel est une interface. Si vous voulez vraiment remplir votre table directement à partir du document XML, écrivez une implémentation personnalisée de l'interface TableModel qui obtient/définit les valeurs de votre objet DOM en mémoire. Un avantage de ceci est que vous pouvez prendre en charge la modification de la table et appliquer les modifications directement à vos éléments XML. Sachez simplement que ces méthodes TableModel s'appellent TRÈS FRÉQUEMMENT et devraient donc être très rapides. Si vous utilisez des documents XML volumineux, les vitesses d'accès aléatoire pour accéder à une cellule individuelle peuvent ne pas être assez rapides.