XML学习失误系列(2):分清节点性质,使用nodeValue

    最近在写一个小应用 就是把XML的文件的内容写入Excel文件 经过在网上搜索,认真研究终于写出了这段脚本,但是试验多次之后,总有错误,一直没弄清楚到底怎么回事,终于找到了,先把XML的文档公布一下:
    
<? xml version="1.0" encoding="utf-8" ?>
< root >
    
< ad >
        
< date > 2006-11-2 </ date >
        
< count > 5 </ count >
    
</ ad >
    
< ad >
       
< date > 2006-11-1 </ date >
       
< count > 5 </ count >
  
</ ad >
</ root >
    就是把最后一个<ad>节点的<date>和<count>的值写入Excel文件的A1和B1 的尾部即可,开始的时候我把代码写成:
   
var  dateArray = xmldoc.getElementsByTagName('date');
          
var  lastDate = dateArray.item(dateArray.length - 1 ).firstChild; // 取文本
          
          
var  countArray = xmldoc.getElementsByTagName('count');
          
var  lastCount = countArray.item(countArray.length - 1 ).firstChild;
这是不行的,因为firstChild节点虽然指的是文本,但是它依然是一个节点,必须取它的指,必须在后面加上nodeValue,而且nodeValue必须匹配text节点,不能用在Element节点上,完整代码应该是:
 1             var  exl = new  ActiveXObject( " Excel.Application " );
 2            exl.Workbooks.Open( " d:\\ajax\\adCount\\ad.xls " );
 3            
 4             var  xmldoc = new  ActiveXObject('Microsoft.XMLDOM');
 5            xmldoc.async = false ;
 6            xmldoc.load( " ad.xml " );
 7            
 8             var  dateArray = xmldoc.getElementsByTagName('date');
 9             var  lastDate = dateArray.item(dateArray.length - 1 ).firstChild.nodeValue; // 取文本
10            
11             var  countArray = xmldoc.getElementsByTagName('count');
12             var  lastCount = countArray.item(countArray.length - 1 ).firstChild.nodeValue;
13            
14            exl.Workbooks( 1 ).Worksheets( 1 ).Activate();
15             var  lineCount = exl.Workbooks( 1 ).ActiveSheet.Columns( 1 ).Count;   
16           
17             var  theSheet = exl.Workbooks( 1 ).ActiveSheet;       
18            theSheet.Cells(lineCount, 1 ).value = lastDate;
19            theSheet.Cells(lineCount, 2 ).value = lastCount;
20            exl.ActiveWorkbook.Save();
21            exl.Quit();

    下载: /Files/tyrael007/Ad.rar
   

你可能感兴趣的:(value)