2011-10-29 55 views
-1

我是java编程新手,我刚刚学会了如何解析xml文件。但我不知道如何解析这个XML文件。请帮我如何获得标签DAY1和自己内心的标签order1代码,order2如何解析这个XML文件

<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> 

我写了下面的代码来检索。但我只得到,但不是在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()))); 
     } 
+2

*的价值“请帮我一个代码。” *请让(特定的)问题。请展示一些努力。请解释你卡在哪里。 SO不是代码生成机器。 –

+0

[我如何使用Java解析XML?](http:// stackoverflow。com/questions/1722140/how-can-i-parse-xml-using-java) –

+0

查看我的帖子;我从一篇评论开始,但由于评论文章太长而无法加入评论。 –

回答

4

在order1的数据,我可以给你,不是一个,不是两个,而是三个方向来解析这个XML(有更多的,但让我们说他们是最公地的人):

  • DOM - >两个很好的资源,以启动:herehere
  • SAX - >从官方网站快速入门:here
  • 的StAX - >一个很好的介绍:here

你的XML文档的大小来看,我可能会去一个DOM解析,这会是最容易实现和使用(但如果你要处理更大的文件,看看SAX用于只读操作,StAX用于读写操作)。

+0

谢谢..它帮助我 – user1019525

+0

@ user1019525没问题,如果你遇到任何问题不要犹豫问。 – talnicolas

+3

Roseindia是*不是一个很好的资源国际海事组织。他们是内容盗贼,并经常出现过时/错误的内容。 –

0

你得到只是“Order1”元素的原因是:

  • 您锁定“第1天”的节点上。
  • 您可以通过返回2个元素的标签名称检索“customer”元素。
  • 您检索第一个元素并打印其值,因此忽略第二个“客户”。

使用DOM时,准备启动多个循环以检索数据。此外,在表示模式时,您有点误导。您实际上不需要将“元素”命名为“day1”/“order1”等。在XML中,可以简单地表示为具有多个“日”或“顺序”元素,这些元素又自动执行排序。一个例子XML看起来像:

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

现在检索“天”的元素是一个简单的问题:

  • 查找“天”的标签名
  • 元素对于每一个“日”元素
    • 查找“命令”元素的标签名
    • 对于每一个“命令”元素
      • 打印出“客户” /“地址”等
+0

非常感谢。这清除了我的疑惑 – user1019525

+0

很高兴为你解决。祝你好运。 :) –

+0

你能告诉我一些网站或书籍,我可以找到关于java中所有主题的详细描述。 – user1019525