繁体   English   中英

如何解析此XML文件

[英]How to parse this XML file

我是Java编程的新手,我刚刚学习了如何解析xml文件。 但是我对如何解析此xml文件一无所知。 请提供有关如何获取标签day1及其内部标签order1,order2的代码的帮助我

<RoutePlan>
<day1>
    <Order1>
    <customer> XYZ</customer>
    <address> INDIA </address>
    <data> 10-10-2011 </data>
    <time> 9.30 A.M </time>
    </Order1>

    <Order2>
    <customer> ABC </customer>
    <address> US </address>
    <data> 10-10-2011 </data>
    <time> 10.30 A.M </time>
    </Order2>
</day1>

我编写了以下代码进行检索。 但是我只在order1中获取数据,而不是在order2中获取数据

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      DocumentBuilder db = dbf.newDocumentBuilder();
      Document document = db.parse(file);
      document.getDocumentElement().normalize();
      System.out.println("Root Element: "+document.getDocumentElement().getNodeName());
      NodeList node =  document.getElementsByTagName("day1");

      for(int i=0;i<node.getLength();i++){
          Node firstNode = node.item(i);
          Element element = (Element) firstNode;
          NodeList customer = element.getElementsByTagName("customer");
          Element customerElement = (Element) customer.item(0);
          NodeList firstName = customerElement.getChildNodes();
          System.out.println("Name: "+((firstName.item(0).getNodeValue())));

          NodeList address = element.getElementsByTagName("address");
          Element customerAddress = (Element) address.item(0);
          NodeList addName = customerAddress.getChildNodes();
          System.out.println("Address: "+((addName.item(0).getNodeValue())));

          NodeList date = element.getElementsByTagName("date");
          Element customerdate = (Element) date.item(0);
          NodeList dateN = customerdate.getChildNodes();
          System.out.println("Address: "+((dateN.item(0).getNodeValue())));


          NodeList time = element.getElementsByTagName("time");
          Element customertime = (Element) time.item(0);
          NodeList Ntime = customertime.getChildNodes();
          System.out.println("Time: "+((Ntime.item(0).getNodeValue())));
      }

我可以给您的不是一个,不是两个,而是三个方向来解析此XML(还有更多的方法,但可以说它们是最常见的方法):

从XML文档的大小来看,我可能会去进行DOM解析,这将是最容易实现和使用的(但是,如果您必须处理更大的文件,请看一下SAX的只读操作)和StAX进行读写)。

您仅获得“ Order1”元素的原因是:

  • 您锁定“ day1”节点。
  • 通过标记名称检索“客户”元素,该元素返回2个元素。
  • 您检索第一个元素并打印其值,因此第二个“客户”将被忽略。

使用DOM时,请准备好启动多个循环以检索数据。 另外,在表示架构时,您也会有些误解。 您确实不需要将“ elements”命名为“ day1” /“ order1”等。在XML中,可以简单地通过具有多个“ day”或“ order”元素来表示,这些元素又会自动执行排序。 XML示例如下所示:

<route-plan>
    <day>
        <order>
            <something>
        </order>
    </day>
    <day>
        <order>
            <something>
        </order>
    </day>
</route-plan>

现在,检索“ day”元素很简单:

  • 通过标签名称查找“天”元素
  • 对于每个“天”元素
    • 通过标签名称查找“订单”元素
    • 对于每个“订单”元素
      • 打印出“客户” /“地址”等值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM