0

how to print this xml file in this format:

GMSports | Category | Tournament | 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>

here I am trying

 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
    And how is the actual output different from what you expect? Commented Jan 18, 2012 at 16:37

1 Answer 1

2
  1. Create proper domain classes like Sport, Category, Tournament etc.
  2. Create the domain classes from XML (You can use JAXB or raw DOM as you are currently doing)
  3. Once you have the domain classes built, you can use them to print it any way you want.

In your current code you are mixing the parsing and report/print logic into one which doesn't scale.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.