以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  [求助]这问题真的要命了。再弄不出来就要挨批了。跪求正解,请高人指点  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=35906)


--  作者:jn02164920
--  发布时间:7/21/2006 11:35:00 PM

--  [求助]这问题真的要命了。再弄不出来就要挨批了。跪求正解,请高人指点
哪位高手动动手帮帮小弟。小弟感激不尽。日后有机会当面报答。小弟在北京。

这个是XML文件。现在就想取其中的《year》,《month》(specialdays的和legaldays属性里的),《specialday 》中间的那几个1,2,3。5.....就想取这三个字段的值。现在有一个问题。
<?xml version="1.0" encoding="UTF-8"?>
<freedaysdefines>
 <freedaysdefine>
  <year>2006</year>
  <specialdays>
   <specialday month="1">1,2,3,5</specialday>
   <specialday month="2">1,2,3,5</specialday>
   <specialday month="3">1,2,3,5</specialday>
  </specialdays>
  <legaldays>
   <legalday month="2">2,3</legalday>
   <legalday month="3">2,3</legalday>
   <legalday month="4">2,3</legalday>
  </legaldays>
  <freeofweek>0,6</freeofweek>
 </freedaysdefine>
  <freedaysdefine>
  <year>2666</year>
  <specialdays>
   <specialday month="2">5,6,7,8</specialday>
  </specialdays>
  <legaldays>
   <legalday month="10">1,2,3</legalday>
  </legaldays>
  <freeofweek>0,6</freeofweek>
 </freedaysdefine>
</freedaysdefines>


这个问题就是我用DOM4j来解析文件。我举个简单点的例子。我现在就想取其中的年这个字段
我写了下面这个方法  public Collection readXmlSpecialDays(String s) {
   ArrayList al = null;
   try {
   al = new ArrayList();
    SAXReader reader = new SAXReader();
    Document document = reader.read(new File(s));
    Element root = document.getRootElement();
    Iterator measureIter = root.elementIterator("freedaysdefine");
    while (measureIter.hasNext()) {
     Element measure = (Element) measureIter.next();
     ForXmlPO fp = new ForXmlPO();
     //从这开始取年
     fp.setYear(measure.selectSingleNode("//freedaysdefine/year").getText());
  System.out.println("1--->"+measure.selectSingleNode("//freedaysdefine/year").getText());
     al.add(fp);
    }
    
   } catch (Exception e) {
    e.printStackTrace();
    
   }
   return al;
  }
但是每次取到的结果都是两个2006。也就是说第二个字段值没取到。这是为什么啊?!
跪求高手指点!


--  作者:SATOKO2006
--  发布时间:7/23/2006 5:05:00 PM

--  
嗯,好久没能XML解析了,研究研究
--  作者:SATOKO2006
--  发布时间:7/23/2006 5:20:00 PM

--  
呵呵,知道了,XPath写成"//freedaysdefine[2]/year"就可以取第二个year了
--  作者:hwljerry
--  发布时间:7/24/2006 8:56:00 PM

--  
selectSingleNode不是只查单个吗,
有selectNodes这个函数吗。试试看有没。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
47.363ms