您的位置:首页 > Web前端 > Node.js

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

2006-11-03 09:03 399 查看
最近在写一个小应用 就是把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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: