java - java中使用Dom解析xml

标签 java xml-parsing

如何以此格式打印此 xml 文件:

GM体育|类别 |锦标赛 | 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. 一旦构建了域类,您就可以使用它们以任何您想要的方式打印它。

在您当前的代码中,您将解析和报告/打印逻辑混合到不可扩展的代码中。

关于java - java中使用Dom解析xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8913810/

相关文章:

php - xml_parse 无内存错误 PHP

java - 需要帮助在 java 中创建文件

java - Android Studio抛出 "image not found"异常

java - 如何断言 Iterable 包含具有特定属性的元素?

java - 更新mongodb java中的嵌套数组值

java - 我的 android xml 解析应用程序在 android 模拟器中意外停止

java - 如何使用spring boot读取jsp文件?

java - 列表填充了最后的数据而不是尊重插入顺序(Android)

android - import org.w3c.dom.Document 与 android 中的另一个 import 语句冲突

android - 解析 xml 文件时出错