2010-01-15 7 views
2

En fait, j'ai un document XML. Je voudrais imprimer les enfants de l'élément racine du document en utilisant un utilitaire dans org.w3c.Dom sans imprimer les en-têtes du document.Java Dom question

J'ai donc besoin d'un utilitaire dans org.w3c.Dom pour imprimer un nœud uniquement. toute aide s'il vous plaît?

+0

Vous pouvez écrire une simple classe d'aide pour accomplir votre tâche autour DOM. Voir ceci http://stackoverflow.com/a/8346867/851432 – Jomoos

Répondre

0

L'impression n'est pas la tâche de l'API Java DOM. Il n'y a pas du tout d'API d'impression.

Vous pouvez certainement visiter les enfants de l'élément racine, regarder le type de chaque nœud et imprimer ce que vous voulez imprimer.

3

En supposant que vous avez un org.w3c.dom.Document vous pouvez imprimer les noms des nœuds enfants de l'élément racine avec quelque chose comme:

// assuming: Document doc = ...; 

NodeList childNodes = doc.getDocumentElement().getChildNodes(); 
for(int i = 0; i < childNodes.getLength(); i++){ 
    System.out.println(childNodes.item(i).getNodeName()); 
} 

De façon réaliste, si vous voulez naviguer dans le DOM en utilisant les org.w3c.dom utilitaires que vous aurez besoin pour déterminer quels appels API sont les plus pertinents pour vous.

Un excellent point de départ est la documentation de l'API (à laquelle j'ai fait référence pour répondre à votre question). Voici les pages pertinentes pour cette réponse particulière:

+0

getChildNodes() retourne une NodeList, pas une collection ou un tableau. En tant que tel, il ne peut pas être utilisé dans une boucle for comme vous le suggérez. – Jherico

+0

@Jherico, c'est dommage, je suppose que je suppose qu'il a implémenté l'une des interfaces de collection, corrigée en conséquence. –

0

J'ai une classe d'utilitaire XML que j'utilise pour une fonctionnalité DOM simple. Dans ce cas, vous pouvez utiliser XmlUtil.writeXml (noeud Node, Writer writer) pour écrire des sous-arborescences individuelles d'un document.

Le code source est disponible here

+0

Merci :) pour vos soins – James