簡體   English   中英

在java中使用Dom進行xml解析

[英]xml parsing using Dom in java

如何以這種格式打印此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);
    }
 }
  1. 創建適當的域類,如體育,類別,錦標賽等。
  2. 從XML創建域類(您可以像當前一樣使用JAXB或原始DOM)
  3. 一旦構建了域類,就可以使用它們以任何方式打印它。

在當前的代碼中,您將解析和報告/打印邏輯混合到一個無法擴展的邏輯中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM