dom4j遍历xml出错

发布于 2022-10-15 09:28:33 字数 8846 浏览 15 评论 0

本帖最后由 jiangeb 于 2011-04-15 14:46 编辑

我用dom4j 遍历xml文件。这个xml文件里包含了5条记录,每条记录的结构一样。遍历的时候程序循环了5遍,得到了5条记录。但是所有记录的结果是一样的,都是第一条的内容。下面是xml文件代码

  1. <ListRecords>
  2. <record>
  3.   <metadata>
  4.    <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
  5.   <dc:title>
  6.   王安石的經世思想 /--夏長樸撰.
  7.   </dc:title>
  8.   <dc:creator>
  9.   夏長樸.
  10.   </dc:creator>
  11.   </metadata>
  12. </record>

复制代码每条记录在一个<record></record>中。在<record>上还有一层是<listrecords>

  1. public int ReadListIdentifyXML(String filename)
  2. {
  3.     int returnValue =0;
  4.     String nodename = "";
  5.     String nodetext = "";
  6.     String nodepath = "";
  7.     int count = 0;
  8.     try
  9.     {                  
  10.          SAXReader saxReader = new SAXReader();
  11.          Document document = saxReader.read((new File(filename)));
  12.          Element root = document.getRootElement();
  13.          Element iden = root.element("ListRecords");
  14.          for(Iterator i = iden.elementIterator(); i.hasNext();)
  15.          {                
  16.                Element element1 =(Element) i.next();
  17.                nodename = element1.getName();
  18.                nodetext = element1.getText();
  19.                nodepath = element1.getPath();
  20.                if(nodename.equals("record"))
  21.               {
  22.                    Element record = iden.element("record");
  23.                   for(Iterator p = record.elementIterator(); p.hasNext();)
  24.                  {
  25.                          Element element2 =(Element) p.next();
  26.                            nodename = element2.getName();
  27.                         nodetext = element2.getText();
  28.                         nodepath = element2.getPath();                      
  29.                         if(nodename.equals("metadata"))
  30.                        {
  31.                              Element metadata = record.element("metadata");
  32.                        for(Iterator q = metadata.elementIterator(); q.hasNext();)
  33.                       {
  34.                           Element element3 =(Element) q.next();
  35.                           nodename = element3.getName();
  36.                                  nodetext = element3.getText();
  37.                                nodepath = element3.getPath();                  
  38.                               if(nodename.equals("dc"))
  39.                               {
  40.                                 Element dc = metadata.element("dc");
  41.                               for(Iterator m = dc.elementIterator(); m.hasNext();)
  42.                              {
  43.                                      Element element4 =(Element) m.next();
  44.                                      nodename = element4.getName();
  45.                                nodetext = element4.getText();
  46.                              nodepath = element4.getPath();
  47.                                System.out.println("4 layer-name=" + nodename);
  48.                              System.out.println("4 layer-value=" + nodetext);
  49.                              System.out.println("4 layer-path=" + nodepath);
  50.                              System.out.println("#################################");
  51.                        }                       
  52.                          }                           
  53.                    }
  54.                      }
  55.                }  
  56.                }
  57.                  nodename = "";
  58.                  nodetext = "";
  59.                  nodepath = "";
  60.           }

复制代码不知道是哪里出错了?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文