Java 如何解析这个XML文件
我是java编程新手,刚刚学习了如何解析xml文件。但是我不知道如何解析这个xml文件。请帮助我获取有关如何获取标记day1及其内部标记order1、order2的代码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
<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进行操作有了相当好的了解。