анализ XML с использованием Dom в Java - PullRequest
0 голосов
/ 18 января 2012

как распечатать этот 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 голосов
/ 18 января 2012
  1. Создание соответствующих классов доменов, таких как Спорт, Категория, Турнир и т. Д.
  2. Создание классов доменов из XML (вы можете использовать JAXB или необработанный DOM, как вы сейчас делаете)
  3. После того, как вы создали классы домена, вы можете использовать их для печати любым удобным для вас способом.

В вашем текущем коде вы смешиваете логику разбора и отчета / печати в одну, которая не масштабируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...