Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解析这个XML文件_Java_Xml Parsing - Fatal编程技术网

Java 如何解析这个XML文件

Java 如何解析这个XML文件,java,xml-parsing,Java,Xml Parsing,我是java编程新手,刚刚学习了如何解析xml文件。但是我不知道如何解析这个xml文件。请帮助我获取有关如何获取标记day1及其内部标记order1、order2的代码 <RoutePlan> <day1> <Order1> <customer> XYZ</customer> <address> INDIA </address> <data> 10-10-2011 &l

我是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>
我编写了以下代码来检索。但我只是按顺序1获取数据,而不是按顺序2获取数据

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的三个方向,不是一个方向,不是两个方向,还有更多的方向,但假设它们是最常见的方向:

DOM->两个很好的开始资源:和 SAX->从官方网站快速启动: StAX->一个很好的介绍:
根据XML文档的大小判断,我可能会选择DOM解析,这将是最容易实现和使用的,但如果您必须处理较大的文件,请看一看SAX用于只读操作,StAX用于读写操作。

您只获得Order1元素的原因是:

锁定day1节点。 通过返回2个元素的标记名检索customer元素。 检索第一个元素并打印其值,因此忽略第二个客户。 使用DOM时,请准备好启动多个循环以检索数据。此外,在表示模式时,您也有点误入歧途。在XML中,您确实不需要将元素命名为day1/order1等,这可以简单地通过具有多个day或order元素来表示,这些元素反过来又自动执行排序。示例XML如下所示:

<route-plan>
    <day>
        <order>
            <something>
        </order>
    </day>
    <day>
        <order>
            <something>
        </order>
    </day>
</route-plan>
现在检索day元素很简单:

按标记名查找日期元素 对于每一天元素 按标记名查找订单元素 对于每个订单元素 打印出客户/地址等的价值。
请帮我写个密码。请问一个具体的问题。请表现出一些努力。请解释一下你被困在哪里。所以不是一个代码生成机器。可能重复的见我的帖子;我一开始写了一条评论,但是评论太长了,所以更新了。@user1019525没问题,如果您在实施过程中遇到任何问题,请毫不犹豫地询问。Roseindia在国际海事组织中不是一个很好的资源。他们是内容窃贼,经常提供过时/错误的内容。@SanjayT.Sharma本例中给出的示例和说明没有那么糟糕,相反,因此,我不认为把他带到那里是有害的。初学者没有办法区分好与坏,作为帮助他们的人,提醒他们同样的事情总是一个好主意,我已经这样做了。YMMV@Talnocolas Hi我现在只能得到order1的值,但不能得到剩余值。我的代码有什么问题吗?你可以告诉我一些网站或书籍,在那里我可以找到javaJava中所有主题的详细描述。Java非常庞大,特别是考虑到它与其他技术XML、数据库等的交互作用。。你有什么具体的想法吗?您是只关心核心语言Java,还是关注它周围的所有技术?我想要这些技术。事实上,我甚至不知道java所采用的技术是什么,我还想学习perfectlyStart的基础知识,它提供了java周围所有技术的要点,同时也涵盖了以下内容。在完成了该页面上的所有内容之后,您应该对如何使用Java进行操作有了相当好的了解。