2012-01-18 71 views
0

如何以此格式打印此xml文件:在java中使用Dom的xml解析

GMSports |類別|錦標賽| TeamAName - TeamBName:TeamAScore - TeamBScore

<?xml version="1.0" encoding="UTF-8"?> 
    <Data> 
    <GMSport SportId="1"> 
    <Name language="en">Soccer</Name> 
    <Category CategoryId="34"> 
    <Name language="en">Australia</Name> 
    <Tournament TournamentId="144"> 
    <Name language="en">Hyundai A-League</Name> 
    <Match MatchId="4616735"> 
    <MatchDate>2011-01-05T07:30:00</MatchDate> 
     <TeamA TeamId="1029369"> 
     <Name language="en">Wellington Phoenix FC</Name> 
     </TeamA> 
     <TeamB TeamId="529088"> 
     <Name language="en">Melbourne Victory</Name> 
     </TeamB> 
     <Status Code="0"> 
     <Name language="en">Not started</Name> 
     </Status> 
     <Winner>0</Winner> 
    </Match> 
     </Tournament> 
    </Category> 
    </GMSport> 
</Data> 

這裏我想

public static void main(String[] args) { 
     try { 
     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder docBuilder = null; 
     try { 
      docBuilder = factory.newDocumentBuilder(); 
     } catch (ParserConfigurationException ex) { 
      Logger.getLogger(DomeParser.class.getName()).log(Level.SEVERE, null, ex);   
     } 

     Document doc = docBuilder.parse (new File("test.xml")); 

     NodeList list = doc.getElementsByTagName("*"); 

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

      Element element = (Element) list.item(i); 
      String nodeName = element.getNodeName(); 

      if (nodeName.equals("GMSport")) { 
       System.out.print(nodeName+"|"); 

      } 

      else if (nodeName.equals("Category")) { 
       System.out.print(nodeName+"|"); 

      } 
      else if (nodeName.equals("Tournament")) { 
        System.out.print(nodeName+"|"); 
      } 

     } 

    } catch (SAXException ex) { 
     Logger.getLogger(DomeParser.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (IOException ex) { 
     Logger.getLogger(DomeParser.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 
+2

實際輸出與您的期望值有什麼不同? – maerics

回答

2
  1. 創建像體育,類別,比賽等
  2. 適當的領域類從XML創建領域類(您可以像當前那樣使用JAXB或原始DOM)
  3. 一旦建立了域類,就可以使用它們以任何您想要的方式打印它。

在您當前的代碼中,您將解析和報告/打印邏輯混合爲一個不能縮放的邏輯。