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
<?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
相关文章推荐
- DataBinding 学习系列(2)详解DataBinding在xml中的使用
- J2EE系列之MyBatis学习笔记(三)-- 使用XML配置SQL映射器
- ajax学习系列之七: 在请求和响应中使用 XML (1)
- ajax学习系列之八: 在请求和响应中使用 XML (2)
- Andorid中使用Jsoup解析库解析XML、HTML、Dom节点---第三方库学习笔记(三)
- [翻译]Popfly系列课程7 –深入幕后:使用 Popfly学习XML的初学者指南
- 安卓智慧上海学习笔记系列——measure()、getMeasuredHeight()的使用
- 深入学习spring-boot系列(二)--使用spring-data-jpa
- 深入学习spring-boot系列(二)--使用spring-data-jpa
- 深入学习spring-boot系列(三)--使用thymeleaf模板
- 深入学习spring-boot系列(三)--使用thymeleaf模板
- XML解析-学习Pull和DOM4J的使用
- (转)Andengine 学习系列5-使用物理系统BOX2D
- Java学习整理系列之Java枚举类型的使用
- ActionScript 3.0 Step By Step系列(七):使用XML和XMLList类处理XML数据
- NodeJS学习系列课程笔记(NodeJs Buffer 的相关使用方法)
- Spring4 学习系列之——FactoryBean的使用
- XML学习笔记(五):使用 jdom和dom4j 解析XML
- 构建安全的Xml Web Service系列之初探使用Soap头
- 使用C#读取XML节点,修改XML节点