2016-03-12 2 views
1

я пытаюсь получить содержимое между тэгом <catalog> </catalog>, как это XML-файл:получение содержимого между двумя тегами XML с использованием 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> 

и получить в результате только это:

<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> 

я начать чтобы узнать о jdom, но я могу достичь этого результата. Я знаю только основные операции, может ли кто-нибудь иметь представление о том, как это сделать, и заранее заблаговременно. я попробовать это:

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()); 

     } 

    } 

я получил результат только так:

[[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

Какой код вы используете? используя для получения результата? –

+0

Но это содержимое элемента ''! Какой результат вы ожидали? –

+0

Я добавил код, который написал – kivok94

ответ

0

Ниже приведен код, как сделать это с 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

попробовать с

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

. Я не хочу указывать имя дочерних узлов:/я хочу сделать это automaticlly :( – kivok94

Смежные вопросы