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
   
posted @ 2006-11-03 09:03  大天使泰瑞尔  阅读(547)  评论(0编辑  收藏  举报