2016-03-12 1 views
1

J'essaie d'obtenir du contenu entre l'étiquette <catalog> </catalog> que c'est un fichier xml:obtenir le contenu entre deux balises XML à l'aide jdom

<test1> 
</test1> 
<catalog> 
    <book id="bk101"> 
    <author>Gambardella, Matthew</author> 
    <title>XML Developer's Guide</title> 
    <genre>Computer</genre> 
    <price>44.95</price> 
    </book> 
    <book id="bk102"> 
    <author>Ralls, Kim</author> 
    <title>Midnight Rain</title> 
    <genre>Fantasy</genre> 
    <price>5.95</price> 
    </book> 
</catalog> 

et obtenir comme résultat que ceci:

<book id="bk101"> 
     <author>Gambardella, Matthew</author> 
     <title>XML Developer's Guide</title> 
     <genre>Computer</genre> 
     <price>44.95</price> 
     </book> 
     <book id="bk102"> 
     <author>Ralls, Kim</author> 
     <title>Midnight Rain</title> 
     <genre>Fantasy</genre> 
     <price>5.95</price> 
     </book> 

je commence Pour en savoir plus sur jdom, mais je peux atteindre ce résultat, je ne connais que les opérations de base, quelqu'un peut-il avoir une idée sur la façon de le faire, et merci d'avance. i essayer ceci:

public static void read() throws JDOMException, IOException{ 
     SAXBuilder reader = new SAXBuilder(); 
     Document doc = reader.build(new File("C:\\Users\\HC\\Desktop\\dataset\\book.xml")); 
     racine = doc.getRootElement(); 

     String root = racine.getName(); 
     Element catalog = racine.getChild("catalog"); 
     List nodes = catalog.getChildren(); 
     Iterator i = nodes.iterator(); 
     while(i.hasNext()){ 
      Element courant = (Element) i.next(); 
     // i want here keeping all tags inside the tag catalog 
     System.out.print(courant.getContent()); 

     } 

    } 

je m'y suis seul résultat comme celui-ci:

[[Text: 
     ], [Element: <author/>], [Text: 
     ], [Element: <title/>], [Text: 
     ], [Element: <genre/>], [Text: 
     ], [Element: <price/>], [Text: 

    ]][[Text: 
     ], [Element: <author/>], [Text: 
     ], [Element: <title/>], [Text: 
     ], [Element: <genre/>], [Text: 
     ], [Element: <price/>], [Text: 
+0

Quel est le code que vous êtes utiliser pour obtenir le résultat? –

+0

Mais c'est le contenu de l'élément ''! Quel résultat vous attendiez-vous? –

+0

j'ai ajouté le code que j'ai écrit – kivok94

Répondre

0

Voici le code de la façon de le faire avec vtd-xml

import com.ximpleware.*; 
    public class getContent { 
     public static void main(String s[]) throws VTDException{ 
      VTDGen vg = new VTDGen(); 
      if (!vg.parseFile("C:\\Users\\HC\\Desktop\\dataset\\book.xml", false)) 
       return; 
      VTDNav vn = vg.getNav(); 
      if (vn.toElement(VTDNav.FIRST_CHILD, "book")){ 
       long l = vn.getContentFragment(); 
       System.out.println("book content ==> "); 
       System.out.println(vn.toString((int)l, (int)(l<<32))); 
      } 
     } 
    } 
-1

essayer avec

List list = catalog.getChildren("book"); 

    for (int i = 0; i < list.size(); i++) { 

     Element node = (Element) list.get(i); 

     System.out.println("Author : " +node.getChildText("author")); 
     System.out.println("Title : " + node.getChildText("title")); 
     // ... etc 

    } 
+0

je ne veux pas spécifier le nom des nœuds enfants:/je veux le faire automatiquement :( – kivok94