比较子节点控制值,而XML解析

我有一个这样组织一个XML文件中,每个节点下的项目总是按字母顺序排列:

<xml> <node id="2"> <jack>Jack wrote this.</jack> <john>John wrote this.</john> </node> <node id="4"> <jack>Jack wrote this.</jack> <jill>Jill wrote this.</jill> </node> <node id="9"> <jack>Jack wrote this.</jack> <james>James wrote this.</james> <jill>Jill wrote this.</jill> <john>John wrote this.</john> </node> </xml>

正如你所看到的,并不是所有的名称是每个节点下。 例如,在<node id="4">约翰和詹姆斯没写东西。 对于上面的例子,我想我的程序返回的东西是这样的:

James did not write 2, 4 Jill did not write 2 John did not write 4

我需要跟踪谁没写什么。 我目前解析这样的文件:

private static String getTagValue(final Element element) { String theId=""; if (element.getTagName().startsWith("node")){ theId = element.getAttribute("id"); return theId; } return theId; } private static void readXML(String fileName){ for (int index = 0; index < nodeList.getLength(); index++){ Node node = nodeList.item(index); Element element = (Element) node; if (node.getNodeType() == Node.ELEMENT_NODE){ // This prints the node id if(getTagValue(element)!=""){ System.out.println(getTagValue(element)+" = I am the node id number!"); } // This prints the name else{ System.out.println(element.getTagName()+" = I am the name!"); } } } }

我想要做的是某种每个节点下的元素比较包含所有名的“控制”列表中,如果它不包含名称,它返回的名称和它的父节点。

在现实中,我处理的XML是要大得多,因此性能的事项,但概念是相同的。 任何帮助将是非常美妙的。

--------------解决方案-------------

维护两套。 一个是主设置的所有名( A )。 第二个是,你每次迭代过程中建立起来,在回答这一问题(人一套B )。 那么没有回答的人是A - B ,你可以做到这一点与Collection#removeAll(Collection c)

A.removeAll(B);

你提到,你想在一行回答什么人没有回答打印出来。 要做到这一点,你可以保持一个地图( Map<String, List<Integer>> ),一个人的名字映射到他们并没有回答问题编号列表。 可以通过检查的结果为此A.removeAll(B)在一个迭代的结束。

所以当你完成通过所有节点的循环,你结束了一个地图,让您与他们没有回答问题清单相关联的每个名字。 然后,您可以遍历这个地图,并打印出你所需要的。

从功能的角度来看,我要说的功能可能会如下:

  • 每个节点的节点获取在xml文件中的所有儿童
  • 比较名称对对照样品节点的名称每个每个子节点
  • 如果节点匹配的名称,然后打破孩子环路
  • 如果名称不匹配,直到for循环,对照组完成再对照组的打印语句名未找到
分类:java的 时间:2012-01-01 人气:0
本文关键词: XML,JAVA,XML解析
分享到:

相关文章

  • 在JAVA XML解析,转换从一个模式到其他 2012-03-24

    如何用Java解析XML. 我有一个XML如下: <?xml version="1.0" ?> <metabase> <response status="SUCCESS"/> <item> <id>10147417040</id> <description> <title>What part of the constitiution states the goals?&l

  • 使用Java XML解析 2012-05-15

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body><getSessionId xmlns="htt

  • 最好的Java XML解析器来处理/编辑现有的XML文档 2012-08-25

    任务:我有一个现有的XML文档(UTF-8),它使用XML命名空间和XML模式. 我需要解析到一个特定的元素,添加内容(即还需要使用XML命名空间前缀),以这个元素,然后重新写出来的文档. 这是我应该使用此任务的最佳XML解析器库? 我已经看到了以前的线程(最佳的XML解析器的Java),但不知道,如果dom4j的或JDOM是任何好的命名空间/ XMLSCHEMA和UTF-8字符良好的支持. 这似乎是一个任务有些解析器 JDOM DOM4J XOM 伍德斯托克 任何想法哪一个是最好的? :-)我

  • 这是在Java XML解析最好的图书馆 2013-10-19

    我在寻找Java库解析XML(复杂的配置和数据文件),我GOOGLE了一下,但未能找到比dom4j的(好像他们正在V2).我已经采取看看公地的配置等,但没'T喜欢,XML的其他Apache项目似乎下冬眠. 我还没有我自己评价dom4j的,但只是想知道 - 做Java有其他(好)的开源XML解析库? 以及如何与dom4j中你的经验? @后VOO的回答让我问另外一个 - 我应该使用Java的内置类或类似的dom4j任何第三方库..有什么优势? --------------解决方案----------

  • 在Java XML解析 2014-02-28

    可能重复: 最好的方法来解析Java中的各种自定义XML文档 大家好, 我初学到Java. 我希望我问的可能是简单的一个问题. 我的问题是,如果我有一个XML文件,我想分析它得到的元素只能在特定标签. 例如,如果XML文件的样子.. <date>2005-10-31</date> <number>12345</number> <purchased-by> <name>My name</name> <address&g

  • 从SAX的Java XML解析器,我怎么能知道“DOCTYPE”关键字的情况? 2014-06-28

    我使用Java SAX解析器(org.xml.sax.ext.DefaultHandler2中的实现)解析XML文件,而这个文件有一个DOCTYPE声明指向一个DTD. 对于一些奇怪的原因,我需要知道其中的"DOCTYPE"关键字本身已经写入原始文件的情况下,这样我可以输出使用完全相同的情况下的文件. 这是,我需要能够区分: <!DOCTYPE thing SYSTEMID ...> ...从: <!doctype thing SYSTEMID ...> 有没有

  • 在的Java XML DOM解析器? 2014-11-03

    任何一个可以分享好的文件在Java DOM解析器. 谢谢 --------------解决方案------------- 以下是教程在Java中使用DOM: XML DOM DOM解析器 Java的XML-DOM 例如DOM 希望这可以帮助. 检查这个简单的XML解析器使用DOM实例,这萨克斯例子: public class ReadXMLFile { public static void main(String argv[]) { try { File fXmlFile = new File(

  • Java中,XML的DocumentBuilder - 解析时设置编码 2013-12-16

    我试图挽救一个树(JTree的延伸),其中包含一个XML文档DOM对象已经改变了它的结构. 我已经创建了一个新的文档对象,遍历树来检索成功的内容(包括XML文档的原始编码),现在有一个 ByteArrayInputStream具有树形内容(XML文档)与正确的编码. 问题是,当我解析编码改为UTF-8 ByteArrayInputStream的 (在XML文档中)自动. 有没有一种方法,以防止这一点,并使用正确的编码作为ByteArrayInputStream的规定. 这也是值得补充说,我已经使

  • 如何读取在Java DOM解析器的特定XML标记 2012-10-12

    XML是 - <?xml version="1.0" encoding="UTF-8"?> <app_content> <app_type value="Browser"> <item> <item_name>sdk_version</item_name> <item_value>01.00.001</item_value> <item_save

  • 如何读取的Java XML? 2012-07-28

    我有以下XML: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <root> <processid>processid_1111</processid> <suggestion> <geo1>a</geo1> <geo2>b</geo2> <geo3>c</g

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.944 (s). 10 q(s)